全棧程序員的新玩具Rust(二)基本代碼入門


先來看這個簡單的程序

image

1.奇怪的關鍵字

fn=function 函數

mut=mutability 變異性,反義詞是immutability 不變性。

2.變量定義

這和其它語言不太一樣,普通的語言里變量默認為可變,如果不可變則要標注為readonly

有些語言壓根沒有不可變這個設計,所有變量都可變。

rust中,let定義的變量為immutability ,不可變,類似於其它語言中的readonly

所以圖中的x 為 只讀變量,不可變

圖中y可以賦值

並且rust 允許覆蓋定義,圖中x定義了兩次,之前的定義會被覆蓋掉。

rust號稱重視明確性的語言,但是允許覆蓋定義難道不會增加不明確性嗎?我才剛開始學習,理解不深,這個問題我先放着,以后或許會有答案。

3.字符串格式化輸出

用{} 格式化輸出了x,y

rust 的字符串設計有一點別扭,查閱資料顯示

rust有char,並且char是四字節的,也就是utf32

但是String並不是 vec<char> 而是 vec<u8> 也就是string 是 utf8

所以string 並不能作為char列表訪問,而是通過 "नमस्ते".chars()函數,轉換為char的列表

這里有個重點記錄一下 rust char 是utf32,string是utf8

因為存在utf32也無法一個char表示的字符,所以還是不能認為一個char就是一個字符。但是這已經覆蓋了99.99%,我們中文的大部分文字一個utf16字夠表達了,超出的那些文字很難遇到。

好讓我們寫一個更加復雜一點的程序

image

3.for循環

rust的for 循環 只有foreach一種形態,沒有c語言那種for(var i=0;i<10;i++)的形式

1..10是表示一個 1到10的迭代器,不包括10

他的for語句不要小括號

continue 和 break 可以用於跳出循環,和其它語言相似

4.if表達式

if 表達式也和其它語言相似,不同的是  if 表達式的條件部分可以沒有括號,也可以有。

但是大括號不可以省略

不允許 if(y==3) continue;這種寫法

5.循環標簽

image

rust 提供了循環標簽這個概念

循環可以帶一個標簽,這樣做 continue 和 break的時候,可以直接指定要跳出哪一層循環,這樣在嵌套循環的情況下可以簡化邏輯,而且還更加貼近機器語言行為。

再結合wasm的loops設計一看,嗯,你們搞rust和wasm肯定勾兌了不少。

 

再來個復雜一點的程序,輸出個乘法口訣表吧

image

6.USE語句

開始寫復雜的程序就必須借助庫了,這里我們使用了rust標准庫的stdout

可以通過use std::io::* 簡單解決問題

7.字符串相關

這里通過format 宏連接了字符串,然后用as_bytes()將他變成一個

&[u8]類型,應為stdout().write();要求這個類型

8.expect

expect(“”)這部分不寫也可以,這是rust常用的一個封裝,返回result,這個函數可能會有失敗的情況

.expect(“”)表示失敗時輸出其中的字符串

 

rust的很多方法都返回result,可能會失敗。當然也可以用if 判斷result

.expect(“”)是rust提供的一種快速的異常處理方法。

也挺好

image

第一個rust 程序,完成


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM