我可以这样做:
let a: [f32; 3] = [0.0, 1.0, 2.0];
但为什么这不起作用?
let a: [f32; _] = [0.0, 1.0, 2.0];
在我看来,长度是多余的,无法推断。有没有办法避免必须明确指定它? (并且无需将f32
附加到所有文字。)
答案 0 :(得分:20)
_
只能在两个上下文中使用:在模式中,匹配要忽略的值,以及作为类型的占位符。在数组类型中,长度不是类型,而是表达式,_
不能在表达式中使用。
但是,您可以做的是将f32
仅附加到其中一个文字中,并完全省略该类型。由于数组的所有项必须具有相同的类型,因此编译器将推断出数组的正确元素类型。
let a = [0.0f32, 1.0, 2.0];
答案 1 :(得分:1)
从1.39版本开始,可以使用一个简单的宏
git clone git_user1@AWS_IP:medicel_repo .
Cloning into '.'...
Load key "/Path/to/.ssh/medicel_aws_git.pub": Permission denied
git_user1@AWS_IP: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
用法
macro_rules! arr {
($id: ident $name: ident: [$ty: ty; _] = $value: expr) => {
$id $name: [$ty; $value.len()] = $value;
}
}