Rust 在具有可变借用的函数中,返回类型的影响是什么?
Rust中的以下代码生成并运行:Rust 在具有可变借用的函数中,返回类型的影响是什么?,rust,Rust,Rust中的以下代码生成并运行: fn func(s: &mut String) -> i32 { s.push_str("!"); println!("{}", s); 1 } fn main() { let mut x = String::from("hello world"); let v = func(&mut x); println!("{}", v); let r = &x[..]; pr
fn func(s: &mut String) -> i32 {
s.push_str("!");
println!("{}", s);
1
}
fn main() {
let mut x = String::from("hello world");
let v = func(&mut x);
println!("{}", v);
let r = &x[..];
println!("{}", r);
}
如果将func
的返回类型更改为&str
,我将得到
error[E0502]:无法将'x'借用为不可变的,因为它也是借用为可变的
-->src/main.rs:11:18
|
9 |设v=func(&mut x);
|-此处发生可变借用
10 | println!(“{}”,五);
11 |设r=&x[…];
|^此处发生不可变借用
12 | println!(“{}”,r);
13 | }
|-可变借用结束于此
我知道在给定的范围内,只允许一个可变引用,但返回类型如何重要?这个问题基本上是重复的,但我已经使用并收回了我的金徽章dupe hammer。当这已作为复制关闭时,请告诉我,我将删除此答案
如果不返回引用,则不能进行借阅 如果
func
的返回类型更改为&str
然后,由于,该函数等价于:
fn func<'a>(s: &'a mut String) -> &'a str
另见:
fn func(s:&'a mut String)->&'b str
可以修复它吗?
fn func(s: &mut String) -> &'static str {
""
}