Rust 如何将字符串切片引用移动到函数,使其';s的生命周期在传递的函数中消亡?
因此,在下面的函数中,我在将参数传递到Rust 如何将字符串切片引用移动到函数,使其';s的生命周期在传递的函数中消亡?,rust,Rust,因此,在下面的函数中,我在将参数传递到func时没有使用&content。在func(content)之后如何使用content 如何将内容引用移动到func,以便该引用在func中消失,并且在调用后不可用(如果这样做有意义的话)?我只想以后释放内存 fn main() { let content = "Hello World"; func(content); println!("{}", content); } fn func
func
时没有使用&content
。在func(content)
之后如何使用content
如何将内容
引用移动到func
,以便该引用在func
中消失,并且在调用后不可用(如果这样做有意义的话)?我只想以后释放内存
fn main() {
let content = "Hello World";
func(content);
println!("{}", content);
}
fn func(string: &str) {
println!("{}", &string);
}
你在评论中似乎有一些误解。您可以调用
func(content)
并仍然使用content
这一事实与content
具有静态生存期这一事实无关。这与不可变引用的实现有关,因此它们不能被“移动”。这就像这段代码在没有任何静态引用的情况下是如何工作的:
fn func(u:T){}
fn main(){
设x=5;
设y=&x;
func(y);
println!(“{}”,y);
}
即使你有一些大的东西,你想最终免费,你不需要做任何事情的参考。一旦退出作用域(例如函数返回),Rust将删除所有局部变量,必要时释放所有内存。内容是静态文本。您的引用指向代码,而不是任何分配的内存。这里没有要清理的记忆。哦,好的。因此,当我将
content
传递给func
时,这是否意味着它复制了字符串,或者只是使用引用,即使不执行&content
@DenysSéguretYou刚刚轻量级地引用了func
。明白了。所以对于静态文本,您不必说&content
对吗?您可以在传递到函数时执行内容
(我的意思是提供引用)。两者都是相同的,对吗?@Damon Correct-content
已经是一个引用,&content
将是一个引用(&str
)。