Rust每週一知 一種 Rust 設計模式

2021-10-02 19:33:30 字數 574 閱讀 7464

最近發現一種 rust 的設計模式,有點好玩,發出來大家**一下。示例如下:

use std::ops::deref;

trait traitfoo

struct a;

impl traitfoo for a

}struct b

implb

}}implderef for b

}trait traitbar

struct c;

impl traitbar for c

}fn main()

執行結果:

huh, i'm foo!

huh, i'm bar!

大體意思就是,b 是乙個型別,它接受乙個泛型作為它的形參,然後「盜用」了它的實參的方法。

如果 b 實現為乙個庫,對外匯出 b 型別,供別人使用。那麼在上層使用者來看,就可以很靈活地為這個匯出型別的例項新增「額外」的方法。而這些方法,並不是使用通常的為「外部型別」實現「本地 trait」的技術來達到。而是通過將本地實現的型別的例項作為引數傳入 b 的構造器來達到。感覺有點意思。

Rust每週一知 Rust中的讀寫鎖RwLock

本文簡單介紹 rust 中的讀寫鎖rwlock,內容概覽如下 基本概念 rust中的rwlock實現 在電腦科學中,有一些經典的同步問題,讀者 作家問題就是其中乙個,該問題涉及多個併發執行緒試圖同時訪問同一共享資源的情況。讀者 作家問題 我們擁有一種資源 例如,資料庫 可以由不修改資源的讀者和可以修...

Rust每週一庫 hyper 底層http庫

現在說到寫應用,網路框架肯定是必不可少的。今天就給大家簡單介紹一下hyper。hyper是乙個偏底層的http庫,支援http 1和http 2,支援非同步rust,並且同時提供了服務端和客戶端的api支援。很多同學可能覺得既然hyper是個偏底層的框架,那是不是就不需要去了解了呢?首先很多上層的框...

Rust每週一庫 csv 檔案讀寫庫

這次搬運的庫是很多資料分析師 資料科學家 以及金融分析師常用的csv檔案庫。用rust實現的乙個高效能 靈活的csv讀寫器,支援serde.將以下配置加進你的cargo.toml dependencies csv 1.1 簡單示範如何從stdin讀取csv資料並通過stdout將每一條記錄列印出來。...