You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rust中返回字符串的所有权机制及未赋值返回值疑问

Rust中未接收返回值的String所有权处理

Rust允许直接丢弃未绑定到变量的返回值,这是完全合法的行为,所以你的代码不会报错——你可能是把Result类型的未处理警告和普通类型搞混了,只有Result这类需要显式处理的类型,未处理才会触发警告或错误。

具体到这个场景的所有权规则:

  • test_function里创建的String,所有权在函数返回时会转移给调用方(main函数的执行上下文)。
  • 当你在main里直接调用test_function();却不把返回值存到变量里,这个String会立刻被Rust自动销毁:编译器会在这个表达式结束后插入drop函数调用,释放它占用的堆内存,完全符合所有权的“一个值同一时间只有一个所有者”规则,也不会造成内存泄漏。

如果想让编译器强制提醒你处理返回值,可以给函数加上#[must_use]属性,这样只要没使用返回值就会触发警告:

#[must_use]
fn test_function() -> String {
    String::from("")
}

fn main() {
    test_function(); // 这里会弹出警告:未使用必须处理的返回值
    println!("Hello");
}

内容的提问来源于stack exchange,提问作者Notbad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 11:45:36