「Rust筆記」修訂間的差異
跳至導覽
跳至搜尋
Tankianting(討論 | 貢獻) |
Tankianting(討論 | 貢獻) (→函數) |
||
行 55: | 行 55: | ||
# 得到 UTF-8 字串長度的方法:[https://docs.rs/unicode-segmentation/1.6.0/unicode_segmentation/index.html UnicodeSegmentation::graphemes](參見:[https://stackoverflow.com/questions/46290655/get-the-string-length-in-characters-in-rust Stack Overflow]) | # 得到 UTF-8 字串長度的方法:[https://docs.rs/unicode-segmentation/1.6.0/unicode_segmentation/index.html UnicodeSegmentation::graphemes](參見:[https://stackoverflow.com/questions/46290655/get-the-string-length-in-characters-in-rust Stack Overflow]) | ||
# [https://stackoverflow.com/questions/45519176/how-do-i-use-or-import-a-local-rust-file 匯入外部函式庫] | # [https://stackoverflow.com/questions/45519176/how-do-i-use-or-import-a-local-rust-file 匯入外部函式庫] | ||
===印出當前目錄(current directory)=== | ===印出當前目錄(current directory)=== | ||
<pre> | <pre> | ||
行 63: | 行 64: | ||
執行結果: | 執行結果: | ||
<code>Ok("[project_dir]")</code> | <code>Ok("[project_dir]")</code> | ||
===sysargv 傳入程式的引數=== | |||
求出引數個數長度,沒輸入自定引數則為0: | |||
<pre> | |||
use std::env; | |||
... | |||
println!("{}", env::args().len()); | |||
</pre> | |||
==變數== | ==變數== |
於 2024年3月16日 (六) 11:58 的修訂
Programming Rust筆記
Ch1概論
- 系統程式語言有「未定義行為」。
- 使用者輸入的內容可能會導致程式漏洞。
- 編譯時消除未定義行為
- 安全,亦於使用
- 平行編譯
- 0 overhead的C++,只有必要花費,不會花費太多資源消耗
- 善用底層
- cargo、trait、generic
Ch2 Rust特性簡單導覽
- rust doc產生文件
- rust編譯器
- cargo編譯管理器
- cargo clean清除編譯文件
沒有;
結尾的視為回傳值。
- 函數定義示例:
fn foo(mut n :i64) -> i64{ ... }
assert!(a == b)
錯誤時拋出panic
- identifier後面的
!
為巨集 let x = m
可以這樣寫,會儘可能型別推論。比較let x : i64 = m
。
其他
編輯器
Emacs
- rust-mode
- C-c C-c C-r:跑程式
- C-c C-f:改善排版,要先裝rustfmt
型別
函數
struct
struct Aminal { species: String, name: String, weight: u64, }
資料結構
- 樹的使用函式庫 Apache License 2.0/MIT
函數
- 得到 UTF-8 字串長度的方法:UnicodeSegmentation::graphemes(參見:Stack Overflow)
- 匯入外部函式庫
印出當前目錄(current directory)
use std::env; ... println!("{:?}", env::current_dir());
執行結果:
Ok("[project_dir]")
sysargv 傳入程式的引數
求出引數個數長度,沒輸入自定引數則為0:
use std::env; ... println!("{}", env::args().len());
變數
字串
- 獲得子字串:
a = a[..1].to_string();