类似 let v = vec![1, 2, 3];
这样的语句默认类型为 i32
,但我想指定类型为 u8
。
其中一种替代方式是使用:
let v: Vec<u8> = vec![1, 2, 3];
或
let v: Vec<u8> = Vec::new();
v.push(1);
v.push(2);
v.push(3);
有没有更好的方法直接使用宏?在这两种情况下,我都需要声明变量。
有时候,我需要在 assert
语句中使用向量。如果有一种方法可以避免创建变量,我可以这样写:
pub fn func1() -> &[u8] {
// return slice [1, 2, 3] of [u8];
}
assert_eq!(vec![1, 2, 3], func1());
let v = tvec![u8; 1, 2, 3];
操作。 - Denys Séguretpub fn func1() -> &[u8]
也是无效的。 - Shepmastermacro_rules!
对于像这样简单的代码来说非常简单,因此您应该查看它们,但在您的特定情况下,您应该像Ikolbly建议的那样简单地执行:vec![1u8,2,3]
。 - Denys Séguret