#async #await #stable
目前,相關的PR已被合併。
Read More: https://github.com/rust-lang/rust/pull/63209#issuecomment-523113079
宣告:async-std 異步標準庫的測試版#async_std
並打算在2019年9月26日前發布1.0版。該庫附帶了一本書和完善的應用編程接口文檔,並將很快提供一個穩定的接口來支持異步庫和應用程式。
雖然我們在1.0版本之前沒有承諾過應用編程接口的穩定性,但是我們也不期望做出任何突破性的改變。
該庫由Rust異步生態系統工作組成員 stjepang 開發,他也是crossbeam的主要開發者,同時也供職於Rust諮詢公司Ferrous Systems。
Read More: https://async.rs/blog/announcing-async-std/
Book: https://book.async.rs/
Docs: https://docs.rs/async-std/0.99.3/async_std/
性能測評:C vs Rust vs Go#Go #C #performance
基於問題:對於給定的圖像,在圖像中找到流行的顏色,這樣用戶就可以根據它的顏色來瀏覽圖像。
使用算法:histogram
最終測試結果:
C 14s
Rust 21s
Go 34s
結論:在實現高效算法方面,Rust似乎處於最佳狀態。它不會在抽象之中隱藏任何東西,你仍然可以像Go一樣高效開發。
Read More: https://medium.com/@marek.michalik/c-vs-rust-vs-go-performance-analysis-945ab749056c
histogram算法:https://spin.atomicobject.com/2016/12/07/pixels-and-palettes-extracting-color-palettes-from-images/
CPU原子和順序解釋#cpu #atomics #ordering
本文簡要地解釋了CPU內存順序是如何工作的,以及它們是做什麼的,這對於理解Rust中的原子類型和Mutex鎖比較重要。
Read More: https://fy.blackhats.net.au/blog/html/2019/07/16/cpu_atomics_and_orderings_explained.html
介紹Glam和Mathbench#linear #algebra
glam是一個用於遊戲和圖形的簡單快速Rust線性代數庫。mathbench是一組單元測試和基準測試。性能相比於cgmath和nalgebra,有一定的優勢。並且有SIMD支持。
Read More: http://bitshifter.github.io/2019/07/10/introducing-glam-and-mathbench/
Glam: https://docs.rs/crate/glam/0.7.1
Mathbench-rs: https://github.com/bitshifter/mathbench-rs
「官方」Rust編譯器團隊活動頁#CompilerTeam
該網站記錄了Rust官方編譯器團隊的一些活動記錄、文檔、會議等信息,感興趣的可以關注。
Read More: https://rust-lang.github.io/compiler-team/
<_>::v::<_>:一件有趣的Rust「藝術品」#tips #fun
<_>::v::<_> 像個貓頭鷹(面試題 +1)
原始代碼:
type O = u8;
trait V {
fn v<T: Default>() -> (T, Self);
}
impl V for O {
fn v<T: Default>() -> (T, Self) {
(T::default(), 0)
}
}
fn main() {
let owl = <_>::v::<_>;
println!("{:?}", owl() as (O, O));
}
網友改進:
type O = u8;
const O: O = 0;
trait V {
fn v<T: Default>() -> (T, Self);
}
impl V for O {
fn v<T: Default>() -> (T, Self) {
(T::default(), O)
}
}
#[test]
fn test() {
let owl = <_>::v::<_>;
assert_eq!(owl(), (O, O));
}
你看懂了嗎?
HinT:
<_>::v::<_>其實等價於<u8>::v::<u8>,類型推導
o和0 不要傻傻分不清楚
Read More: https://chrismorgan.info/blog/rust-artwork-owl/
gym-rs: OpenAI gym的Rust綁定#openAI
測試覆蓋率報告作為代碼閱讀工具#CoverageReport #CI #review
本文教你一種使用覆蓋率報告閱讀項目源碼的方法,以alacritty的代碼為示例,使用kcov來說明。
awmp:用於在actix-web中處理文件上傳#actix #multipart
是對actix-multipart的包裝,方便使用
Repo: https://crates.io/crates/awmp
construct: 一個用同倫映射構造三維幾何的高階函數編程庫#functional #3D #HomotopyMap
什麼是同倫(Homotopy)映射?
同倫是兩個函數之間的連續變形。考慮將兩個函數f和g與一個在0和1之間的參數結合起來,這樣把參數設為0就得到f,把參數設為1就得到g。換句話說,它讓你可以在函數之間平滑地插值。這個庫使用了一個簡化的同倫版本,用於構建三維幾何。
Repo: https://github.com/pistondevelopers/construct
一個Yew使用react組件的示例#react #yew #wasm
Repo: https://github.com/hobofan/yew-react-example
Meuse: 一個免費的Rust私有Cargo註冊倉#cargo #registry
Repo: https://github.com/mcorbin/meuse
Glitter: 漂亮地輸出Git倉庫狀態信息#git
用於在shell提示符中顯示關於Git倉庫的信息
Repo: https://github.com/glfmn/glitter/tree/v0.2.0
「系列文章」Rust中如何優化async/await Part I#async
官方在穩定Rust異步async/await的過程中,解決了很多問題。其中之一是從異步到狀態機的轉換,目前不是最優的方法。所以,這導致狀態變得比需要的大得多。由於狀態大小實際上是超線性增長的,所以當狀態大小增長超過正常系統線程的大小時,可能會觸發實際棧上的棧溢出。
該文作者過去幾個月主要是解決這個問題,他寫下這篇文章來告訴大眾該問題的優化過程。好事多磨。
Read More: https://tmandry.gitlab.io/blog/posts/optimizing-await-1/
相關issues:https://github.com/rust-lang/rust/issues/52924
相關issues:https://github.com/rust-lang/rust/issues/62149
From 日報小組 Chaos
日報訂閱地址:
獨立日報訂閱地址:
Telgram Channel
阿里雲語雀訂閱
Steemit
GitHub
社區學習交流平臺訂閱:
Rust.cc論壇: 支持rss
Rust Force: 支持rss
微信公眾號:Rust語言學習交流