天天看點

【Rust 日報】2020-12-05 rust-gpu 釋出 v0.2

rust-gpu 釋出 v0.2

目前可以編譯并運作非常簡單的着色器,而且核心庫的很大一部分也可以編譯。但是,很多功能還沒有實作:例如,還不支援循環和開關!這意味着,盡管該項目在技術上可用,但遠未達到可以投入生産使用。

#[spirv(entry = "fragment")]
pub fn main_fs(input: Input<Vec4>, mut output: Output<Vec4>) {
    let dir: Vec3 = input.load().truncate();

    let cs_pos = Vec4(dir.0, -dir.1, 1.0, 1.0);
    let ws_pos = {
        let p = clip_to_world.mul_vec4(cs_pos);
        p.truncate() / p.3
    };
    let dir = (ws_pos - eye_pos).normalize();
    
    // evaluate Preetham sky model
    let color = sky(dir, sun_pos);

    output.store(color.extend(0.0))
}           

複制

【Rust 日報】2020-12-05 rust-gpu 釋出 v0.2

v0.2的 Github Release 連結:https://github.com/EmbarkStudios/rust-gpu/releases/tag/v0.2

rust-analyzer 測量 Rust 的記憶體使用情況

這篇文章記錄了在 rust-analyzer 中用于測量記憶體消耗的一些有趣技巧。通常,有兩種廣泛的方法可以分析程式的記憶體使用情況。第一種方法是基于堆的解析(heap parsing),第二種方法是基于對配置設定和釋放程序的調用檢測。詳細可以參見原文。

文章連結,https://rust-analyzer.github.io/blog/2020/12/04/measuring-memory-usage-in-rust.html

RAUI,将 UI 視為另一種資料

RAUI,受到 React 聲明式 UI 組成和 UE4 Slate 小部件元件系統的極大啟發。RAUI 體系結構的主要思想是将 UI 視為另一種資料,你可以将其轉換為目标呈現引擎選擇的目标可呈現資料格式。

Application 的示例:

let mut application = Application::new();
let tree = widget! {
    (app {
        title = (title_bar: {"Hello".to_owned()})
        content = (vertical_box [
            (#{"hi"} button: {"Say hi!".to_owned()})
            (#{"exit"} button: {"Close".to_owned()})
        ])
    })
};
let mut renderer = HtmlRenderer::default();
application.apply(tree);
if let Ok(output) = application.render(&mut renderer) {
    println!("{}", output);
}           

複制

Github 連結,https://github.com/PsichiX/raui

200 行 Rust 代碼解釋 Futures

本書旨在通過示例驅動的方法來解釋 Rust 中的 Futures,探索為什麼它們被設計成這樣,以及它們是如何工作的。還介紹了一些在程式設計中處理并發時的替代方案。

英文原版連結,https://cfsamson.github.io/books-futures-explained/introduction.html

中文版本連結,https://stevenbai.top/rust/futures_explained_in_200_lines_of_rust/

From 日報小組 洋芋

社群學習交流平台訂閱:

  • Rustcc論壇: 支援rss
  • 微信公衆号:Rust語言中文社群