最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

rust學(xué)習(xí)(到所有權(quán))

2022-09-03 00:28 作者:UE_AN_A  | 我要投稿

cargo相關(guān)

cargo new [project_name]

cargo build

cargo check? // 速度快

cargo run? ?


rust 難學(xué),難學(xué) ,難學(xué)

rust 安全 ,啥都安全?

rust 語(yǔ)法糖還行 ,感覺(jué)有像腳本語(yǔ)言?

rust 速度挺快?


打印hello world! : println!("hello world !");

1. 變量和可變性??

let 聲明一個(gè)變量??

mut 聲明一個(gè)變量為可變的變量,

若不聲明默認(rèn)是不可變的變量

定義格式? : let mut a:i32 = 123 ;? ?

let [mut][name][type] = [value] ;

?要么指定值 ,要么指定類型? (強(qiáng)類型語(yǔ)言,編譯器必須知道每一個(gè)變量是啥類型)??

2. 數(shù)組類型 分為標(biāo)量和復(fù)合類型

標(biāo)量:整形、浮點(diǎn)、布爾、字符

? 整形:u 無(wú)符號(hào) i有符號(hào)? u8, i8 ~~u128 i128? isize usize(64位或32位,系統(tǒng)的位數(shù))

? 浮點(diǎn):f32 f64?

? 數(shù)值運(yùn)算:+ - * / %?

? 布爾運(yùn)算:&& || !

? 復(fù)合運(yùn)算符 : += -= *= /= %=?

復(fù)合類型:原生復(fù)合(元組合數(shù)組)??

1, 元組? ()? 定長(zhǎng)? ?元祖可以解構(gòu)賦值給變量 , 每個(gè)元素不必相同

可變性 :? 元組定義完成后數(shù)據(jù)類型固定, 不能將在同一個(gè)位置指定和定義不同的數(shù)據(jù)類型?

訪問(wèn) a.x??

2. 數(shù)組? ?[]? ? 定長(zhǎng)? ?數(shù)組也可以解構(gòu)賦值給變量, 元素必須相同?

? ? 可變性:? ?和元祖相同?

訪問(wèn): a[x]

??

3. 函數(shù)? main() 是入口

格式

fn [function_name]([p1],[p2]...)->[return_type]{


return [value] ;

// or end line [value]? ?沒(méi)有;? ?


}


注釋: //? ,? /*? */


if- else?

流程控制??


?if [condition]{

?

?}else if[condition]{

?

?}else{

?

?}

可以在? = 右邊? 使用if??


循環(huán) loop,while ,for?

無(wú)限循環(huán)

loop{}? ? ?可以使用 break ,continue 打斷?


while[condit]{? ?}

?

for element in []{}

for number in ([start]..[end]) , 左閉右開(kāi)?


所有權(quán)理解?

??臻g不考慮所有權(quán)問(wèn)題(可能只是初學(xué),暫時(shí)先這么理解)

堆空間??

一個(gè)蘿卜一個(gè)坑, 蘿卜一旦換坑 前一個(gè)坑就會(huì)被編譯器埋掉??

除非是借用一下的 & , 借用不更改所有權(quán)

或者是clone(), 克隆后變成了倆份。? 類似于c++的深拷貝。

在不使用引用的情況下函數(shù)傳遞參數(shù)會(huì)改變實(shí)參的所有權(quán),

函數(shù)返值也會(huì)將所有權(quán)移交出去

重點(diǎn) :? 可變引用也會(huì)發(fā)生所有權(quán)的移交 而且是一種隱式的移交?

其規(guī)則我猜想是如下的:


fn main() {??

? ? ? let mut a = String::from("stringA");// a 擁有string所在空間的所有權(quán)

? ? ? let b = &mut a;? ?//b 是a的一個(gè)可變引用?

? // 注意: let mut b = &a 和 let b = &mut a 是不一樣的

// 還有 let mut b = &mut a 也是不一樣的

//c++ 表示不虧是我的挑戰(zhàn)者,越來(lái)越像我的形狀了【斜眼笑】

? ? ? b.push_str("add"); // 通過(guò)引用來(lái)修改a空間里的東西?

// 這時(shí)候也會(huì)發(fā)生數(shù)據(jù)競(jìng)爭(zhēng),a 和b都在競(jìng)爭(zhēng)同一塊堆空間

? ? ? //println!("{a}");? ?如果先要訪問(wèn)a,就會(huì)報(bào)錯(cuò)?

? ? ? println!("");? // 我的理解是 在上一步 內(nèi)存的所有權(quán)會(huì)移動(dòng)給b,也就是可變引用

//在這里,內(nèi)存的所有權(quán)依然在b上 ,但是可以移交給a ,

//當(dāng)然也可以不移交,只是擁有了移交的權(quán)利

? ? ? println!("{a}"); // 移交給 a , b 失去所有權(quán)?

}

用一個(gè)通俗的理解就是? 借你的東西(能讓你改的東西),你最少要用(改)一次。

(不用不行,不用沒(méi)法還)當(dāng)然也可以不還一直用,但是一旦還了,你就不能用了?

這在的確是不會(huì)造成數(shù)據(jù)競(jìng)爭(zhēng) ,而且做法也是比較合乎使用需求的,畢竟

可變引用出現(xiàn) 就是要改值的。改完還給人家也正常。不過(guò)就是一旦歸還了所有權(quán)那這個(gè)

可變引用就失效了。以后在寫(xiě)代碼時(shí)需要注意。


rust學(xué)習(xí)(到所有權(quán))的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
河津市| 上高县| 页游| 宜兴市| 军事| 浙江省| 芜湖市| 崇州市| 静安区| 青阳县| 宁蒗| 寿阳县| 霍城县| 民勤县| 淳化县| 青川县| 乌海市| 隆安县| 南雄市| 平江县| 西昌市| 石门县| 彰化县| 房产| 金门县| 安溪县| 湛江市| 开鲁县| 诏安县| 五原县| 东光县| 台南县| 同江市| 英山县| 靖宇县| 清水河县| 临汾市| 贵德县| 宜城市| 雅江县| 临湘市|