如今暗色模式已经是各个操作系统都实现的较为完善了,而浏览器也提供了一些方便适配的 API。 实现一个简单的适配暗色模式只是第一步,既然浏览器已经提供好了较为完善的 API 那么就可以实现一个所谓的能用的暗色模式适配方案。 1. 在第一次打开页面或从未进行过设置时,优先匹配系统的颜色模式; 2. 在手动调整过颜色主题时,利用 进行保存,以实现再次打开或刷新的持续生效; 第一步的实现在 CSS 的 m
Rust 有 3 种结构体类型:具名字段型结构体、元组结构体和单元型结构体。 - 具名型结构体:为每个组件命名。 - 元组型结构体:按组件出现的顺序标识他们。 - 单元型结构体:没有组件。 ## 具名结构体 与其他所有语法项一样,结构体默认情况下是私有的,仅在声明它们的模块及其子模块种可见。可以通过在结构体的定义前加上 来是结构体在其模块外部可见。结构体中的每个字段也是默认私有的。 其他模块不能按
2025-02-12 · 4 分钟阅读· 820 字 · Rust 有时,可能需要对函数的内联进行微观管理,但我们通常会把这种优化留给编译器。可以使用 属性进行微观管理: 只有在一种特定的情况下,如果没有 ,就不会发生内联。当一个 crate 中定义的函数或方法在另一个 crate 中被调用时,Rust 不会将其内联,除非它是泛型的或名曲的标记为 。
2025-01-12 · 1 分钟阅读· 112 字 · Rust Rust 中有两类常见的错误处理: 和 。 普通错误使用 类型来处理。 通常用以表示由程序外部的事物引发的错误,比如错误的输入、网络的中断或权限问题。 针对的是另一种错误,即那种永远不应该发生的错误。 > Rust 之所以会用一个新词(panic)而不是沿用“异常”来表达,是因为两者并不等价。 ## panic 当程序遇到下列问题时,就可以断定程序自身存在 Bug,故而引发 panic: - 数组
2024-12-12 · 2 分钟阅读· 534 字 · Rust Rust 中的指针分为拥有型指针和非拥有型指针。其中,拥有型指针意味着当拥有者被丢弃时,它的引用目标也会随之消失。引用(reference)的非拥有型指针,意味着对引用目标的生命周期毫无影响。 事实上,引用的生命周期绝不能超过其引用目标。为了强调这一点,Rust 把创建对某个值的引用的操作称为借用(borrow)那个值:凡是借用,终须归还。 为了在不影响其所有权的情况下访问值。引用分为一下两种。
2024-10-10 · 4 分钟阅读· 876 字 · Rust 谈及内存管理,我们希望编程语言具备两个特点: - 希望能在我们选定的时机及时释放,这使我们能控制程序的内存消耗; - 在对象被释放后,我们绝不希望继续使用指向它的指针,这是未定义行为,会导致崩溃和安全漏洞。 ## 所有权 在使用指向一个堆内存的指针时,人们普遍认为,虽然其他代码也可以创建指向拥有内存的临时指针,但是在拥有者决定销毁拥有对象之前,其他代码有责任确保其指针已消失。这便是所有权的示例,拥
是 Rust 选择的异步模型。 并发在现代社会非常重要,多数主流语言都有对自己并发模型的设计以及取舍。 - OS 线程, 它最简单,也无需改变任何编程模型(业务/代码逻辑),因此非常适合作为语言的原生并发模型,在 多线程章节也提到过,Rust 就选择了原生支持线程级的并发编程。但是,这种模型也有缺点,例如线程间的同步将变得更加困难,线程间的上下文切换损耗较大。使用线程池在一定程度上可以提升性能,但
Binary! Gentoo gose Binary! 在一月的倒数前两天,Gentoo 整了个新活。不再像以前只有过于复杂的软件提供了二进制文件(例如 linux 内核和 firefox),现在整个包管理器 Portage 都提供了二进制的选择。 > You probably all know Gentoo Linux as your favourite source-based distrib
在 tauri 中为 command 使用自定义错误 在 tauri 的 command 中返回的任何值都必须要是可以 的,包括错误:Everything you return from commands must implement ## async 语句中使用 async 语句块与 async fn 最大的不同就是前者无法显式的声明返回值,当配合 使用的时候编译器就无法得知 中 E 的类型。
2024-03-23 · 4 分钟阅读· 925 字 · Rust 大多数 Linux 软件都是动态链接的,动态链接可以使我们的程序不需要将所有所需要的库都打包到自身当中去。不过这样也有弊处,当目标系统比较旧,或者压根就没有我们需要的库的时候,我们的二进制文件就无法在目标系统中运行。 ## 安装交叉编译工具 不光光需要使用 来安装对应的 target,还需要 linker 来帮助构建到目标平台。 macOS Ubuntu 在安装好 target 与 linker