我開始懷疑觀看人數了,我覺得我猜得好不準ㄛ。我覺得會比較少人看得竟然會蠻多人看得@@
太扯了太扯
我現在在想之後打疫苗是不是沒辦法完成挑戰QQ
身體加油R
今天要講的是 trait 這是在 Rust 中要實現 OOP 物件導向程式設計的重要部件。
直接 Code 範例吧
trait Owo {
fn add(&self) -> i32;
fn reduce(&self) -> i32;
}
struct First {
x: i32,
y: i32,
z: i32,
}
impl Owo for First {
fn add(&self) -> i32 {
self.x + self.y + self.z
}
fn reduce(&self) -> i32 {
self.x - self.y - self.z
}
}
fn main() {
let a = First{
x: 5,
y: 3,
z: 2,
};
println!("{}", First::add(&a));
println!("{}", First::reduce(&a));
}
以上可以看到最簡單的 trait 利用,那聰明的讀者們可能已經想到了,這不是跟之前的 impl 能做到的事情沒有任何區別嗎,而且還增加了代碼量
impl Second {
fn add(&self) -> i32 {
self.x + self.y + self.z
}
fn reduce(&self) -> i32 {
self.x - self.y - self.z
}
}
這是不用 trait 的寫法,是不是少了很多東西呢
那接下來我來講一下為甚麼要使用 trait
如果說定義了第二個叫做 Second 而他要實現的東西跟 First 一樣
那這樣一個一個看是不是很難去理解整段程式碼,此時就能使用 trait 對這個規範進行一個限制,讓他無法出現 trait 所綁定的以外的東西,就能夠讓整體的可讀性變高。
那麼以上就是最簡單的 trait 用法,然後需要知道的是很多套件都有使用 trait 來規範使用者使用該套件所以撰寫時要特別注意。
那接下來講甚麼呢,至少明天應該會講多線程
只不過我還真的沒想到 trait 這麼快就寫完了 該水一下了
好啦在講幾個例子有關 Rust 的 std 庫
先附連結:fs
在 Rust 中想要去撰寫文字檔或是開啟文字檔編輯之類的 STD 庫就有內建給你了
fn create_file(s: String) {
File::create(&s).unwrap();
}
^這樣就可以創建檔案。
fn delete_file(s: String) -> std::io::Result<()>{
remove_file(&s)?;
Ok(())
}
^這樣就可以刪除檔案,不過要記得的是,在以下情況會回傳 Err
fn write_file(s: String, Name: String) -> std::io::Result<()>{
write(Name, s)?;
Ok(())
}
^撰寫檔案的部分
fn open_file(s: String) -> std::io::Result<()> {
let mut f = File::open(s)?;
let mut data = String::new();
f.read_to_string(&mut data)?;
println!("{}", data);
Ok(())
}
^ 開啟檔案
好了,今天差不多到這邊吧,各位晚安 又灌...又灌...又...又灌水文章