归档与标签

TOPIC COLLECTION / 主题手记

Rust

沿着一个主题,拾起散落的思考。
让有关的文字,在这里慢慢生长。

已加载 14 篇文章,按最新排序。

14 篇文章

最近收录

最近写下
逐像素弯曲时空:singularity-rs 黑洞渲染器深度解析
40 分钟阅读8186 字

逐像素弯曲时空:singularity-rs 黑洞渲染器深度解析

一个用 Bevy 0.19 写就的实时 Kerr(旋转)黑洞渲染器,每个像素在 GPU 上独立积分弯曲时空中的测地线。本文从物理公式、自适应 RK45 积分器、CPU↔GPU 镜像架构到 HDR 渲染管线,逐层解剖其工程内核,关键方法均配可运行示例。

实时渲染RustBevy
20 分钟阅读4052 字

全栈 Rust 系统的 CI/CD 架构白皮书:Yggdrasil 高性能构建、防御性验证与现代 CD 实践

深度剖析全栈 Rust/Dioxus 0.7 博客与 CMS 引擎 Yggdrasil 的 CI/CD 流水线设计。从编译拓扑、指令集力学、缓存物理模型、Docker 引擎契约、防御性验证与异构运维六个维度,探讨零 QEMU 损耗、高缓存命中率、基于预置断言冒烟测试与带外无损 CD 的工程实践。

RustDockerCI-CDDevOpsArchitecture
Yggdrasil:用 Rust 同时编译浏览器与服务器
47 分钟阅读9416 字

Yggdrasil:用 Rust 同时编译浏览器与服务器

> 一份代码,两个运行时。一个 Rust 全栈博客引擎的深度源码剖析。 Yggdrasil 是一个用 Rust 写的全栈博客 / CMS。它没有前后端分离,没有 Node 中间层,没有两个仓库的同步地狱。它只用一份 Rust 源码,通过 Cargo 的 feature gate,编译出两个完全不同的产物:一个编译成 WebAssembly 跑进浏览器当交互前端,一个编译成原生 ELF 当 Axum

RustDioxus架构源码剖析Docker
2 分钟阅读490 字

Leptos 中的暗色模式适配

如今暗色模式已经是各个操作系统都实现的较为完善了,而浏览器也提供了一些方便适配的 API。 实现一个简单的适配暗色模式只是第一步,既然浏览器已经提供好了较为完善的 API 那么就可以实现一个所谓的能用的暗色模式适配方案。 1. 在第一次打开页面或从未进行过设置时,优先匹配系统的颜色模式; 2. 在手动调整过颜色主题时,利用 进行保存,以实现再次打开或刷新的持续生效; 第一步的实现在 CSS 的 m

RustLeptos
4 分钟阅读820 字

第 9 章 结构体

Rust 有 3 种结构体类型:具名字段型结构体、元组结构体和单元型结构体。 - 具名型结构体:为每个组件命名。 - 元组型结构体:按组件出现的顺序标识他们。 - 单元型结构体:没有组件。 ## 具名结构体 与其他所有语法项一样,结构体默认情况下是私有的,仅在声明它们的模块及其子模块种可见。可以通过在结构体的定义前加上 来是结构体在其模块外部可见。结构体中的每个字段也是默认私有的。 其他模块不能按

Rust
1 分钟阅读112 字

第 8 章 Create 与模块

有时,可能需要对函数的内联进行微观管理,但我们通常会把这种优化留给编译器。可以使用 属性进行微观管理: 只有在一种特定的情况下,如果没有 ,就不会发生内联。当一个 crate 中定义的函数或方法在另一个 crate 中被调用时,Rust 不会将其内联,除非它是泛型的或名曲的标记为 。

Rust
2 分钟阅读534 字

第 7 章 错误处理

Rust 中有两类常见的错误处理: 和 。 普通错误使用 类型来处理。 通常用以表示由程序外部的事物引发的错误,比如错误的输入、网络的中断或权限问题。 针对的是另一种错误,即那种永远不应该发生的错误。 > Rust 之所以会用一个新词(panic)而不是沿用“异常”来表达,是因为两者并不等价。 ## panic 当程序遇到下列问题时,就可以断定程序自身存在 Bug,故而引发 panic: - 数组

Rust
4 分钟阅读876 字

第 5 章 引用

Rust 中的指针分为拥有型指针和非拥有型指针。其中,拥有型指针意味着当拥有者被丢弃时,它的引用目标也会随之消失。引用(reference)的非拥有型指针,意味着对引用目标的生命周期毫无影响。 事实上,引用的生命周期绝不能超过其引用目标。为了强调这一点,Rust 把创建对某个值的引用的操作称为借用(borrow)那个值:凡是借用,终须归还。 为了在不影响其所有权的情况下访问值。引用分为一下两种。

Rust
10 分钟阅读2087 字

第 4 章 所有权与移动

谈及内存管理,我们希望编程语言具备两个特点: - 希望能在我们选定的时机及时释放,这使我们能控制程序的内存消耗; - 在对象被释放后,我们绝不希望继续使用指向它的指针,这是未定义行为,会导致崩溃和安全漏洞。 ## 所有权 在使用指向一个堆内存的指针时,人们普遍认为,虽然其他代码也可以创建指向拥有内存的临时指针,但是在拥有者决定销毁拥有对象之前,其他代码有责任确保其指针已消失。这便是所有权的示例,拥

LinuxRust
20 分钟阅读4081 字

异步 Rust

是 Rust 选择的异步模型。 并发在现代社会非常重要,多数主流语言都有对自己并发模型的设计以及取舍。 - OS 线程, 它最简单,也无需改变任何编程模型(业务/代码逻辑),因此非常适合作为语言的原生并发模型,在 多线程章节也提到过,Rust 就选择了原生支持线程级的并发编程。但是,这种模型也有缺点,例如线程间的同步将变得更加困难,线程间的上下文切换损耗较大。使用线程池在一定程度上可以提升性能,但

RustAsynchronous
4 分钟阅读925 字

疑难杂症

在 tauri 中为 command 使用自定义错误 在 tauri 的 command 中返回的任何值都必须要是可以 的,包括错误:Everything you return from commands must implement ## async 语句中使用 async 语句块与 async fn 最大的不同就是前者无法显式的声明返回值,当配合 使用的时候编译器就无法得知 中 E 的类型。

Rust
4 分钟阅读832 字

跨平台的静态链接构建

大多数 Linux 软件都是动态链接的,动态链接可以使我们的程序不需要将所有所需要的库都打包到自身当中去。不过这样也有弊处,当目标系统比较旧,或者压根就没有我们需要的库的时候,我们的二进制文件就无法在目标系统中运行。 ## 安装交叉编译工具 不光光需要使用 来安装对应的 target,还需要 linker 来帮助构建到目标平台。 macOS Ubuntu 在安装好 target 与 linker

LinuxRust
10 分钟阅读2025 字

Rust Box 与对象

对于多数高级语言往往会弱化堆栈的概念,它们通常由 GC 等方式来管理内存。而对于像 Rust 这类的低级语言来说,则需要更深入的了解堆栈的概念。 栈内存从高位地址向下增长,且栈内存是连续分配的,一般来说操作系统对栈内存的大小都有限制。这也是为什么 C 语言中无法创建任意长度的数组。在 Rust 中, 线程的栈大小是 8MB,普通线程是 2MB。在函数调用时会在其中创建一个临时的栈空间,调用结束后

Rust
2 分钟阅读488 字

Rust 模式匹配

match 是一个极为强大的控制流运算符,它允许我们将一个值与一系列的模式相比较,并根据相匹配的模式执行相应代码。模式可由字面值、变量、通配符和许多其他内容构成。 ### 绑定值的模式 在匹配到绑定值的模式后,可以增加一个变量用来表示所匹配到的值。 这里的 就是匹配到的对应的 的值。 ### 匹配 Option 这里 Clippy 可能会提示我们有更好的写法: 上有个 方法,可以更好的代替 来做匹

Rust
© 2026 Yggdrasil