<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>03-结构型 on 编程那些事儿</title><link>https://before80.github.io/prgms/Rust/RustDesignPatterns/design-patterns/03-structural/</link><description>Recent content in 03-结构型 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/RustDesignPatterns/design-patterns/03-structural/index.xml" rel="self" type="application/rss+xml"/><item><title>01-组合结构体</title><link>https://before80.github.io/prgms/Rust/RustDesignPatterns/design-patterns/03-structural/01-compose-structs/</link><pubDate>Tue, 18 Aug 2026 22:10:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/RustDesignPatterns/design-patterns/03-structural/01-compose-structs/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://rust-unofficial.github.io/patterns/"&gt;Rust Design Patterns&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://rust-unofficial.github.io/patterns/patterns/structural/compose-structs.html"&gt;https://rust-unofficial.github.io/patterns/patterns/structural/compose-structs.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="组合结构体"&gt;组合结构体&lt;/h1&gt;
&lt;h2 id="description"&gt;描述&lt;/h2&gt;
&lt;p&gt;有时大型结构体会给借用检查器带来问题——虽然字段可以独立借用，但有时整个结构体最终被一次性使用，从而阻止其他用途。一种解决办法是将结构体分解为若干较小的结构体，再将它们组合回原来的结构体。这样每个结构体可以单独借用，并具有更灵活的行为。&lt;/p&gt;</description></item><item><title>02-偏好小型 crate</title><link>https://before80.github.io/prgms/Rust/RustDesignPatterns/design-patterns/03-structural/02-prefer-small-crates/</link><pubDate>Tue, 18 Aug 2026 22:10:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/RustDesignPatterns/design-patterns/03-structural/02-prefer-small-crates/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://rust-unofficial.github.io/patterns/"&gt;Rust Design Patterns&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://rust-unofficial.github.io/patterns/patterns/structural/small-crates.html"&gt;https://rust-unofficial.github.io/patterns/patterns/structural/small-crates.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="偏好小型-crate"&gt;偏好小型 crate&lt;/h1&gt;
&lt;h2 id="description"&gt;描述&lt;/h2&gt;
&lt;p&gt;偏好只把一件事做好的小型 crate。&lt;/p&gt;
&lt;p&gt;Cargo 与 crates.io 使添加第三方库变得容易，远胜于例如 C 或 C++。此外，由于 crates.io 上的包在发布后不能被编辑或移除，现在能工作的任何构建在将来也应当继续工作。我们应当利用这些工具，使用更小、更细粒度的依赖。&lt;/p&gt;</description></item><item><title>03-把不安全封装在小模块中</title><link>https://before80.github.io/prgms/Rust/RustDesignPatterns/design-patterns/03-structural/03-contain-unsafety-in-small-modules/</link><pubDate>Tue, 18 Aug 2026 22:10:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/RustDesignPatterns/design-patterns/03-structural/03-contain-unsafety-in-small-modules/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://rust-unofficial.github.io/patterns/"&gt;Rust Design Patterns&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://rust-unofficial.github.io/patterns/patterns/structural/unsafe-mods.html"&gt;https://rust-unofficial.github.io/patterns/patterns/structural/unsafe-mods.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="把不安全封装在小模块中"&gt;把不安全封装在小模块中&lt;/h1&gt;
&lt;h2 id="description"&gt;描述&lt;/h2&gt;
&lt;p&gt;若你有 &lt;code&gt;unsafe&lt;/code&gt; 代码，创建尽可能小的、能维护所需不变量的模块，以便在其上构建最小的安全接口。将它嵌入到一个更大的、只包含安全代码并提供符合人体工程学接口的模块中。注意，外层模块可以包含直接调用不安全代码的 &lt;code&gt;unsafe&lt;/code&gt; 函数和方法。用户可以利用这一点获得性能收益。&lt;/p&gt;</description></item><item><title>04-用自定义 trait 避免复杂类型约束</title><link>https://before80.github.io/prgms/Rust/RustDesignPatterns/design-patterns/03-structural/04-avoid-complex-type-bounds-with-custom-traits/</link><pubDate>Tue, 18 Aug 2026 22:10:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/RustDesignPatterns/design-patterns/03-structural/04-avoid-complex-type-bounds-with-custom-traits/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://rust-unofficial.github.io/patterns/"&gt;Rust Design Patterns&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://rust-unofficial.github.io/patterns/patterns/structural/trait-for-bounds.html"&gt;https://rust-unofficial.github.io/patterns/patterns/structural/trait-for-bounds.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="用自定义-trait-避免复杂类型约束"&gt;用自定义 trait 避免复杂类型约束&lt;/h1&gt;
&lt;h2 id="description"&gt;描述&lt;/h2&gt;
&lt;p&gt;Trait 约束有时会变得相当难用，尤其是当涉及某个 &lt;code&gt;Fn&lt;/code&gt; trait&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;，并对输出类型有特定要求时。在这种情况下，引入一个新 trait 可能有助于减少冗长、消除一些类型参数，从而提高表达力。这样的 trait 可以伴随一个对所有满足原始约束的类型的泛型 &lt;code&gt;impl&lt;/code&gt;。&lt;/p&gt;</description></item></channel></rss>