Rust 锈蚀:预期寿命参数问题
我是个新手,正在制作一个简单的程序来练习,它需要2个数字并打印它们之间的数字。这是我的密码Rust 锈蚀:预期寿命参数问题,rust,Rust,我是个新手,正在制作一个简单的程序来练习,它需要2个数字并打印它们之间的数字。这是我的密码 fn main(){ 设a:u32=2; 设b:u32=10; 设a=结果(&a和&b); println!(“{:?}”,a); } fn结果(a:&u32,b:&u32)->[Vec]{ 让mut-vec=vec::new(); 对于a..b中的x{ 矢量推力(a); } vec } 当我运行这个程序时,我得到了这个错误 fn result(a: &u32, b: &u32) -&g
fn main(){
设a:u32=2;
设b:u32=10;
设a=结果(&a和&b);
println!(“{:?}”,a);
}
fn结果(a:&u32,b:&u32)->[Vec]{
让mut-vec=vec::new();
对于a..b中的x{
矢量推力(a);
}
vec
}
当我运行这个程序时,我得到了这个错误
fn result(a: &u32, b: &u32) -> [Vec<&u32>] {
| ^ expected lifetime parameter
fn结果(a:&u32,b:&u32)->[Vec]{
|^预期寿命参数
借用和生命周期的概念对我来说仍然非常陌生。请帮助我确定我错在哪里。这里的错误信息非常清楚: 此函数的返回类型包含借用值,但签名没有说明它是从
a
还是b
提供显式生存期将有助于编译器理解您试图执行的操作:
fn result<'a>(a: &'a u32, b: &'a u32) -> Vec<&'a u32> {
let mut vec: Vec<&'a u32> = Vec::new();
for x in *a..*b {
vec.push(&x);
}
vec
}
您可能想要的是完全避免借款:
fn result(a: u32, b: u32) -> Vec<u32> {
let mut vec = Vec::new();
for x in a..b {
vec.push(x);
}
vec
}
fn结果(a:u32,b:u32)->Vec{
让mut-vec=vec::new();
对于a..b中的x{
矢量推力(x);
}
vec
}
是另一个非常类似的问题。尽管这个问题已经得到了回答,但我想指出,铁锈书中有一章适合理解这个问题:
fn result(a: u32, b: u32) -> Vec<u32> {
let mut vec = Vec::new();
for x in a..b {
vec.push(x);
}
vec
}