AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

聊聊Rust中的“借用”

來源: 責編: 時間:2024-04-26 08:53:12 177觀看
導讀在Rust的世界里,想要優雅地共享數據,就得聊聊“借用”這檔子事。想象一下,朋友有個寶貝,咱們不奪人所愛,只是暫時借用一下,用完還得物歸原主,這就是借用(Borrowing)的核心思想。借用基礎操作來看看這行代碼:let y = &x;這里,y

在Rust的世界里,想要優雅地共享數據,就得聊聊“借用”這檔子事。想象一下,朋友有個寶貝,咱們不奪人所愛,只是暫時借用一下,用完還得物歸原主,這就是借用(Borrowing)的核心思想。7wc28資訊網——每日最新資訊28at.com

借用基礎操作

來看看這行代碼:7wc28資訊網——每日最新資訊28at.com

let y = &x;

這里,y就是一個指向x的引用,就像你跟朋友說:“嘿,借你那5塊錢瞅瞅。”要查看y指向的值,得用解引用運算符,就像這樣:7wc28資訊網——每日最新資訊28at.com

assert_eq!(5, *y);

就像借來的錢終究要還,引用離開作用域后,它指向的數據依然安好無恙。7wc28資訊網——每日最新資訊28at.com

函數中的借用

比如,我們要計算字符串s1的長度,但又不想轉讓所有權,怎么辦?用引用傳參唄!7wc28資訊網——每日最新資訊28at.com

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

在main函數里,我們這么用:7wc28資訊網——每日最新資訊28at.com

let s1 = String::from("hello");let len = calculate_length(&s1);println!("The length of '{}' is {}.", s1, len);

瞧見沒,s1的引用被傳遞給了calculate_length函數,既測了長度,又沒動人家的奶酪,多和諧!7wc28資訊網——每日最新資訊28at.com

可變引用:想要改一改?

不過,要是想修改借用的東西,就像你不僅想牽牽手還想給妹子一個擁抱,那就得用可變引用了,得這么寫:7wc28資訊網——每日最新資訊28at.com

fn change(some_string: &mut String) {   some_string.push_str(", world");}

記得,被借用的變量也得是可變的,就像這樣初始化:7wc28資訊網——每日最新資訊28at.com

let mut s = String::from("hello");change(&mut s);

這下,你的“hello”就能變成“hello, world”了。7wc28資訊網——每日最新資訊28at.com

可變引用的限制

但別太貪心,Rust規定,在同一時間,對于同一個數據,只能有一個可變引用存在。比如這段代碼就會報錯:7wc28資訊網——每日最新資訊28at.com

let mut s = String::from("hello");let r1 = &mut s;let r2 = &mut s; // 這里會報錯

為啥?因為Rust的borrow checker(借用檢查器)在盯著呢,它絕不允許數據競爭這種危險的事情發生,那可是軟件bug的大戶。7wc28資訊網——每日最新資訊28at.com

大括號:作用域的藝術

遇到借用沖突,別急,大括號是你的解藥。它能幫你控制變量的作用域,這樣就能巧妙避開借用檢查器的紅線:7wc28資訊網——每日最新資訊28at.com

{   let r1 = &mut s;} // r1的生命到此為止let r2 = &mut s; // 現在可以再創建一個可變引用了

總結一下

  • 借用讓代碼更簡潔,還能避免所有權的頻繁轉移。
  • 要修改數據,記得用可變引用&mut。
  • 同一時間,一個數據只能被一個可變引用借用,但可以有任意數量的不可變引用。
  • 利用大括號控制作用域,能解決很多借用問題。

怎么樣,是不是覺得Rust的借用機制既嚴格又貼心?這都是為了咱們程序的安全和穩定啊!7wc28資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-85712-0.html聊聊Rust中的“借用”

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 秒掛了!與快手無緣了....

下一篇: 護航千行百業應用鴻蒙化,超 60 個安全類鴻蒙生態伙伴 SDK 加速適配原生鴻蒙

標簽:
  • 熱門焦點
  • 一加首款折疊屏!一加Open渲染圖出爐:罕見單手可握小尺寸

    8月5日消息,此前就有爆料稱,一加首款折疊屏手機將會在第三季度上市,如今隨著時間臨近,新機的各種消息也開始浮出水面。據悉,這款新機將會被命名為“On
  • 分布式系統中的CAP理論,面試必問,你理解了嘛?

    對于剛剛接觸分布式系統的小伙伴們來說,一提起分布式系統,就感覺高大上,深不可測。而且看了很多書和視頻還是一臉懵逼。這篇文章主要使用大白話的方式,帶你理解一下分布式系統
  • 微信語音大揭秘:為什么禁止轉發?

    大家好,我是你們的小米。今天,我要和大家聊一個有趣的話題:為什么微信語音不可以轉發?這是一個我們經常在日常使用中遇到的問題,也是一個讓很多人好奇的問題。讓我們一起來揭開這
  • 一個注解實現接口冪等,這樣才優雅!

    場景碼猿慢病云管理系統中其實高并發的場景不是很多,沒有必要每個接口都去考慮并發高的場景,比如添加住院患者的這個接口,具體的業務代碼就不貼了,業務偽代碼如下:圖片上述代碼有
  • JVM優化:實戰OutOfMemoryError異常

    一、Java堆溢出堆內存中主要存放對象、數組等,只要不斷地創建這些對象,并且保證 GC Roots 到對象之間有可達路徑來避免垃 圾收集回收機制清除這些對象,當這些對象所占空間超過
  • 小紅書1周漲粉49W+,我總結了小白可以用的N條漲粉筆記

    作者:黃河懂運營一條性教育視頻,被54萬人“珍藏”是什么體驗?最近,情感博主@公主是用鮮花做的,火了!僅僅憑借一條視頻,光小紅書就有超過128萬人,為她瘋狂點贊!更瘋狂的是,這
  • 破圈是B站頭上的緊箍咒

    來源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之每年的暑期檔都少不了瞄準追劇女孩們的古偶劇集,2021年有優酷的《山河令》,2022年有愛奇藝的《蒼蘭訣》,今年卻輪到小破站抓住了追
  • 10天營收超1億美元,《星鐵》比《原神》差在哪?

    來源:伯虎財經作者:陳平安即便你沒玩過《原神》,你一定聽說過的它的大名。恨它的人把《原神》開服那天稱作是中國游戲史上最黑暗的一天,有粉絲因為索尼在PS平臺上線《原神》,怒而
  • 自研Exynos回歸!三星Galaxy S24系列將提供Exynos和驍龍雙版本

    年初,全新的三星Galaxy S23系列發布,包含Galaxy S23、Galaxy S23+和Galaxy S23 Ultra三個版本,全系搭載超頻版驍龍8 Gen 2,雖同樣采用臺積電4nm工藝制
Top