<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>第2章 库 on 编程那些事儿</title><link>https://before80.github.io/prgms/Rust/pragmaticRustGuidelines/libraries/</link><description>Recent content in 第2章 库 on 编程那些事儿</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Fri, 21 Aug 2026 22:34:20 +0800</lastBuildDate><atom:link href="https://before80.github.io/prgms/Rust/pragmaticRustGuidelines/libraries/index.xml" rel="self" type="application/rss+xml"/><item><title>01-互操作性</title><link>https://before80.github.io/prgms/Rust/pragmaticRustGuidelines/libraries/01-interoperability/</link><pubDate>Tue, 18 Aug 2026 18:10:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/pragmaticRustGuidelines/libraries/01-interoperability/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://microsoft.github.io/rust-guidelines/"&gt;Pragmatic Rust Guidelines&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://microsoft.github.io/rust-guidelines/guidelines/libs/interop/index.html"&gt;https://microsoft.github.io/rust-guidelines/guidelines/libs/interop/index.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="互操作性"&gt;互操作性&lt;/h1&gt;
&lt;h2 id="M-TYPES-SEND"&gt;类型是 Send (M-TYPES-SEND)&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;本条守护：可在 Tokio 中使用，以及置于运行时抽象之后。&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;公开类型出于兼容性应当是 &lt;code&gt;Send&lt;/code&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;所产生的全部 future（无论显式还是隐式）必须是 &lt;code&gt;Send&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;其他大多数类型也应当是 &lt;code&gt;Send&lt;/code&gt;，但可能有例外&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="future"&gt;Future&lt;/h3&gt;
&lt;p&gt;当显式声明 future 时，你应当确保它是、并且一直保持为 &lt;code&gt;Send&lt;/code&gt;。&lt;/p&gt;</description></item><item><title>02-用户体验</title><link>https://before80.github.io/prgms/Rust/pragmaticRustGuidelines/libraries/02-ux/</link><pubDate>Tue, 18 Aug 2026 18:10:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/pragmaticRustGuidelines/libraries/02-ux/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://microsoft.github.io/rust-guidelines/"&gt;Pragmatic Rust Guidelines&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://microsoft.github.io/rust-guidelines/guidelines/libs/ux/index.html"&gt;https://microsoft.github.io/rust-guidelines/guidelines/libs/ux/index.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="用户体验"&gt;用户体验&lt;/h1&gt;
&lt;h2 id="M-SIMPLE-ABSTRACTIONS"&gt;抽象不要明显嵌套 (M-SIMPLE-ABSTRACTIONS)&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;本条守护：低认知负荷与良好的开箱即用 UX。&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;设计公共类型与主要 API 面时，避免向用户暴露嵌套或复杂的参数化类型。&lt;/p&gt;</description></item><item><title>03-韧性</title><link>https://before80.github.io/prgms/Rust/pragmaticRustGuidelines/libraries/03-resilience/</link><pubDate>Tue, 18 Aug 2026 18:10:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/pragmaticRustGuidelines/libraries/03-resilience/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://microsoft.github.io/rust-guidelines/"&gt;Pragmatic Rust Guidelines&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://microsoft.github.io/rust-guidelines/guidelines/libs/resilience/index.html"&gt;https://microsoft.github.io/rust-guidelines/guidelines/libs/resilience/index.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="韧性"&gt;韧性&lt;/h1&gt;
&lt;h2 id="M-MOCKABLE-SYSCALLS"&gt;I/O 与系统调用可被 mock (M-MOCKABLE-SYSCALLS)&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;本条守护：否则难以触发的边界情况也可测试。&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;任何面向用户、会做 I/O 或带副作用的系统调用的类型，都应能 mock 这些副作用。这包括文件和网络访问、时钟、熵源与种子，以及类似事物。更一般地说，任何满足以下条件的操作都应当可被 mock：&lt;/p&gt;</description></item><item><title>04-构建</title><link>https://before80.github.io/prgms/Rust/pragmaticRustGuidelines/libraries/04-building/</link><pubDate>Tue, 18 Aug 2026 18:10:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/pragmaticRustGuidelines/libraries/04-building/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://microsoft.github.io/rust-guidelines/"&gt;Pragmatic Rust Guidelines&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://microsoft.github.io/rust-guidelines/guidelines/libs/building/index.html"&gt;https://microsoft.github.io/rust-guidelines/guidelines/libs/building/index.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="构建"&gt;构建&lt;/h1&gt;
&lt;h2 id="M-OOBE"&gt;库开箱即用 (M-OOBE)&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;本条守护：在整个 Rust 生态中易于采用。&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;库必须在所有受支持平台上&lt;em&gt;开箱即用&lt;/em&gt;，明确声明为平台或目标特定的库除外。&lt;/p&gt;
&lt;p&gt;Rust crate 常常带有几十个依赖，应用则有上百个。用户期望 &lt;code&gt;cargo build&lt;/code&gt; 和 &lt;code&gt;cargo install&lt;/code&gt; &lt;em&gt;直接能用&lt;/em&gt;。看看安装 &lt;code&gt;bat&lt;/code&gt; 时拉入约 250 个依赖的情形：&lt;/p&gt;</description></item></channel></rss>