类似的东西let v = vec![1, 2, 3];会默认为i32,但我想将类型指定为u8.
一种替代方法是使用以下命令创建:
let v: Vec<u8> = vec![1, 2, 3];
Run Code Online (Sandbox Code Playgroud)
或者
let v: Vec<u8> = Vec::new();
v.push(1);
v.push(2);
v.push(3);
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法直接使用宏?在这两种情况下,我都需要声明一个变量。
有时,我需要在语句中使用向量assert。如果有办法避免创建变量,我可以写:
pub fn func1() -> &[u8] {
// return slice [1, 2, 3] of [u8];
}
assert_eq!(vec![1, 2, 3], func1());
Run Code Online (Sandbox Code Playgroud)
在这种情况下,将自动推断出向量的类型。这编译得很好:
fn func1() -> Vec<u8> {
vec![1, 2, 3]
}
fn main() {
assert_eq!(func1(), vec![1, 2, 3]);
}
Run Code Online (Sandbox Code Playgroud)
如果您需要显式指定类型,您可以执行类似的操作vec![1u8, 2, 3]