rust trait 使用基礎(chǔ)

1饺藤、trait 泛型

使用trait 方法實現(xiàn)泛型參數(shù)的初始化例:

use std::fmt::Debug;
use serde::Serialize;

trait Result<T> {
    fn ok(data: T) -> Self;
    fn ng(code: i32, msg: String) -> Self;
}

#[derive(Serialize, Debug)]
struct BaseResult<T> {
    code: i32,
    message: String,
    data: Option<T>,
}

impl<T> Result<T> for BaseResult<T> {
    fn ok(data: T) -> Self {
        BaseResult {
            code: 0,
            message: "OK".to_string(),
            data: Some(data),
        }
    }

    fn ng(code: i32, message: String) -> Self {
        BaseResult { code, message, data: None }
    }
}

fn main() {
    let a = BaseResult::<String>::ok("Nice Data".to_string());
    let str = serde_json::to_string(&a).unwrap();
    println!("{}", str);

    let b = BaseResult::<u32>::ng(1, "not allowd".to_string());
    let b_str = serde_json::to_string(&b).unwrap();
    println!("{}", b_str);
}


2剑辫、trait 對象

trait Speak {
    fn speak(&self);
}

struct Dog;

impl Speak for Dog {
    fn speak(&self) {
        println!("Woof!");
    }
}

struct Cat;
impl Speak for Cat{
    fn speak(&self) {
        println!("Meow!");
    }
}

fn main() {
    let animals:Vec<Box<dyn Speak>> = vec![
        Box::new(Dog),
        Box::new(Cat),
    ];

    for animal in animals {
        animal.speak();
    }
}

3饼问、Send, Sync

image.png

4、格式化

image.png

5揭斧、 Copy Clone

image.png

6莱革、 定義無字段的 struct ,通過下標來訪問

struct MyBox<T>(T);

struct YourBox<T, R>(T, R);

fn main() {

    let a = MyBox(18);
    let b = YourBox("AA", 18);

    println!("{}", a.0);
    println!("{} - {}", b.0, b.1);
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市讹开,隨后出現(xiàn)的幾起案子盅视,更是在濱河造成了極大的恐慌,老刑警劉巖旦万,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件闹击,死亡現(xiàn)場離奇詭異,居然都是意外死亡成艘,警方通過查閱死者的電腦和手機赏半,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進店門贺归,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人断箫,你說我怎么就攤上這事拂酣。” “怎么了仲义?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵婶熬,是天一觀的道長。 經(jīng)常有香客問我埃撵,道長赵颅,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任暂刘,我火速辦了婚禮饺谬,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘谣拣。我一直安慰自己募寨,他們只是感情好,可當我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布芝发。 她就那樣靜靜地躺著绪商,像睡著了一般。 火紅的嫁衣襯著肌膚如雪辅鲸。 梳的紋絲不亂的頭發(fā)上格郁,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天,我揣著相機與錄音独悴,去河邊找鬼例书。 笑死,一個胖子當著我的面吹牛刻炒,可吹牛的內(nèi)容都是我干的决采。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼坟奥,長吁一口氣:“原來是場噩夢啊……” “哼树瞭!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起爱谁,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤晒喷,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后访敌,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體凉敲,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了爷抓。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片势决。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蓝撇,靈堂內(nèi)的尸體忽然破棺而出果复,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站汇鞭,受9級特大地震影響韧衣,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜朱盐,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一群嗤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧兵琳,春花似錦狂秘、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至清女,卻和暖如春钱烟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背嫡丙。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工拴袭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人曙博。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓拥刻,卻偏偏與公主長得像,于是被迫代替她去往敵國和親父泳。 傳聞我的和親對象是個殘疾皇子般哼,可洞房花燭夜當晚...
    茶點故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內(nèi)容