【Rust日报】 2020-1-16 用 Rust 来诠释 Epoll, Kqueue 和 IOCP
- 2020 年 2 月 20 日
- 筆記
用 Rust 来诠释 Epoll, Kqueue 和 IOCP
这其实是一本书,旨在说明 Epoll,Kqueue 和 IOCP 的工作原理,我们可以将其用于高效率、高性能的 I/O。其中一些实现将会使用 rust,原文地址:https://cfsamsonbooks.gitbook.io/epoll-kqueue-iocp-explained/
扩展阅读:Green Threads Explained in 200 Lines of Rust
reddit 上参与讨论:https://www.reddit.com/r/rust/comments/ephm4t/epoll_kqueue_and_iocp_explained_with_rust/
Deadpool
Deadpool
是一个死的简单异步池,用于任何类型的连接和对象。
Example
use async_trait::async_trait; #[derive(Debug)] enum Error { Fail } struct Computer {} struct Manager {} type Pool = deadpool::managed::Pool<Computer, Error>; impl Computer { async fn get_answer(&self) -> i32 { 42 } } #[async_trait] impl deadpool::managed::Manager<Computer, Error> for Manager { async fn create(&self) -> Result<Computer, Error> { Ok(Computer {}) } async fn recycle(&self, conn: &mut Computer) -> deadpool::managed::RecycleResult<Error> { Ok(()) } } #[tokio::main] async fn main() { let mgr = Manager {}; let pool = Pool::new(mgr, 16); let mut conn = pool.get().await.unwrap(); let answer = conn.get_answer().await; assert_eq!(answer, 42); }
这个库还提供:Database connection pools,GitHub 地址:https://github.com/bikeshedder/deadpool
factori
Factori
is a testing factory library inspired by Ruby's FactoryBot.
Example
Factori
provides two macros: factori!, which defines a factory for a type, and create!
which instantiates it:
#[macro_use] extern crate factori; pub struct Vehicle { number_wheels: u8, electric: bool, } factori!(Vehicle, { default { number_wheels = 4, electric = false, } mixin bike { number_wheels = 2, } }); fn main() { let default = create!(Vehicle); assert_eq!(default.number_wheels, 4); assert_eq!(default.electric, false); // Its type is Vehicle, nothing fancy: let vehicle: Vehicle = default; let three_wheels = create!(Vehicle, number_wheels: 3); assert_eq!(three_wheels.number_wheels, 3); let electric_bike = create!(Vehicle, :bike, electric: true); assert_eq!(electric_bike.number_wheels, 2); assert_eq!(electric_bike.electric, true); }