rust学习六——引用与借用

本文介绍了Rust中的引用和借用概念,包括不可变引用、可变引用及其限制,悬空引用及其避免,以及引用的一般规则。强调了Rust如何在编译时防止数据竞争和悬空引用,保证代码安全。
摘要由CSDN通过智能技术生成

引用和借用

一、引用

rust使用 与符号 & 表示引用。允许我们使用一个变量的值,而避免该变量所有值的转移。

fn main() {
    let s1 = String::from("hello");
    
    let len = calculate_len(&s1);
    
    println("The length of '{}' is {}", s1, len);
}

fn calculate_len(s: &String) -> usize {
    s.len()
}

我们将使用引用作为函数参数的行为称为借用。借用很形象的表达函数所使用的参数的所有权是不属于函数本身的,函数只是暂时借用了此变量的值。 当超出函数作用域后,引用失效。该值不会被销毁,因为该值得所有者仍然存在。


二、不可变引用与可变引用

如果一个声明的引用是不可变的,则不允许改变该引用所指向的值。如果引用是可变的,且该引用指向的值是可变类型,则该可变引用允许改变它指向的值。

fn main() {
    let mut s = String::from("hello");  // s is mutable
    
    change(&mut s);
} 

fn change(some_string: &mut String) {
    some_string.push_str(", world");  // some_string is Mutable reference
    							
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值