开发者社区> 问答> 正文

什么是Rust的所有权规则?

什么是Rust的所有权规则?

展开
收起
张柠檬 2022-05-11 23:19:02 393 0
来自:阿里技术
1 条回答
写回答
取消 提交回答
  • 1)Rust 中每一个值或者对象都有一个称之为其 所有者(owner)的变量。

    例如:

    let obj = String::from("hello"); obj是String对象的所有权变量。

    2)值或对象有且只能有一个所有者。

    3)当所有者离开作用域,所有者所代表的对象或者值会被立即销毁。

    4)赋值语句、函数调用、函数返回等会导致所有权转移,原有变量会失效。

    例如:

    fn main() { let s = String::from("hello"); let s1 = s; //所有权发生了转移,由s转移给s1 print!("{}",s); //s无效,不能访问,此句编译会报错 } fn test(s1:String){ print!("{}",s1); }

    fn main() { let s = String::from("hello"); test(s); //传参,所有权发生了转移 print!("{}",s); //此处s无效,编译报错 } Rust的所有权规则保证了同一时刻永远只有一个变量持有一个对象的所有权,避免数据竞争。

    2022-05-12 12:12:26
    赞同 展开评论 打赏
问答分类:
问答地址:
来源圈子
更多
收录在圈子:
+ 订阅
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载