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
)。