第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

【九月打卡】第6天 Rust 引用和借用

標簽:
活動

课程章节: 第3章 Rust进阶

主讲老师叶枭

课程内容:

今天学习的内容是 Rust 中所有权的另一个知识点,借用和引用

引入一个场景,有一个 reverse 函数,用于将一个字符串值进行反转:

fn reverse(s: String) -> String {
  s.chars().rev().collect()
}

fn main() {
  let s1 = String::from("hello");
  let s2 = reverse(s1);
  println!("{} {}", s1, s2);
}

按照前面所学的所有权的知识,在调用 reverse 时,变量 s1 对字符串值的所有权就交给了函数,所以当前作用域下 s1 不再有效,打印 s1 就会报错

那么如果 s1 还有用处,就是需要打印 s1 呢?

Rust 提供了引用的功能,来实现这个需求。

引用

声明变量时,和之前没有区别:

let s1 = String::from("hello");

再函数调用传参时,需要在变量前面加上 & 表示这是一个引用值,它能允许在不转移所有权的情况下使用值

let s2 = reverse(&s1);

这里的 &s1 允许在不转移所有权的前提下,创建一个指向 s1 值的引用。引用不拥有值的所有权,所以将 &s1 引用作为参数传给函数后,在当前作用域下,变量 s1 依然拥有字符串值的所有权,这样 s1 就能正常打印而不会报错了。

借用

那么函数内部如何使用引用呢?

函数在声明时,在参数类型前加上 & 来表示该参数的类型是一个引用。

fn reverse1(s: &String) -> String {
  s.chars().rev().collect()
}

这种通过引用传递参数给函数的方法也被称为借用(borrowing)。

引用的规则

从上面使用运用的示例中,我们能总结出一些规则:

1.使用引用类型不会获得所有权

2.默认情况下引用是不可变的

3.同一时间最多只能存在一个可变引用(防止多线程下的数据竞争)

课程收获

这节课学习了 Rust 中所有权中有一个很重要的概念,引用和借用。通过引用,可以避免所有权的转移,方便在作用域下对变量的使用,在开发中用的非常多。

图片描述

點擊查看更多內(nèi)容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學(xué)

大額優(yōu)惠券免費領(lǐng)

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消