我想使用在运行时确定的特定大小初始化零向量。
在C中,它将像:
int main(void)
{
uint size = get_uchar();
int A[size][size];
memset(A, 0, size*size*sizeof(int));
}
这是我尝试在Rust中编写的辅助函数,但我认为切片语法0..size
会冒犯编译器。此外,它看起来比C版本更冗长。有没有更惯用的方法来做到这一点?
fn zeros(size: u32) -> Vec<i32> {
let mut zero_vec: Vec<i32> = Vec::with_capacity(size);
for i in 0..size {
zero_vec.push(0);
}
return zero_vec;
}
我发誓以前的文档曾经在这里解释一种from_elem()
方法,但这种表示法的排列似乎都不起作用[0 ; size]
我想最终将其粘贴到子字符串搜索算法中:
pub fn kmp(text: &str, pattern: &str) -> i64 {
let mut shifts = zeros(pattern.len()+1);
}
let mut shifts = vec![0; pattern.len()];
现在可以直接使用...糟糕。在此之前,我有一个error: expected
:, found
.`。/ search.rs:17 zero_vec.push(0);`没有任何意义。