Digital Library

深入浅出Rust (范长春)(Z-Library)

范长春

深入浅出Rust (范长春)(Z-Library)

Author 范长春

rust
Language Chinese

本书详细描述了Rust语言的基本语法,穿插讲解一部分高级使用技巧,并以更容易理解的方式解释其背后的设计思想。 全书总共分五个部分。第一部分介绍Rust基本语法,因为对任何程序设计语言来说,语法都是基础,学习这部分是理解其他部分的前提。第二部分介绍属于Rust独一无二的内存管理方式。它设计了一组全新的机制,既保证了安全性,又保持了强大的内存布局控制力,而且没有额外性能损失。这部分是本书的重点和核心所在,也是Rust语言的思想内核精髓之处。第三部分介绍Rust的抽象表达能力。它支持多种编程范式,以及较为强大的抽象表达能力。第四部分介绍并发模型。在目前这个阶段,对并行编程的支持是新一代编程语言不可绕过的重要话题。Rust也吸收了业界最新的发展成果,对并发有良好支持。第五部分介绍一些实用设施。 Rust语言有许多创新,但它绝不是高高在上孤芳自赏的类型,设计者在设计过程中充分考虑了语言的工程实用性。众多在其他语言中被证明过的优秀实践被吸收了进来,有利于提升实际工作效率。通过此书,读者能够深入透彻地理解Rust的高阶特性,比如代数类型系统、生命周期、借用检查、内部可变性、线程安全、泛型、闭包、迭代器、生成器等。

Format EPUB
Size 2.8 MB
217
Views
0
Downloads
0.00
Total Donations

AI Guide

AI Reading Assistant

Whole-book reading guide from stratified index samples; jump to passages in the text

Full assistant
AI guide
【One-Line Pitch】 A thorough, design-minded introduction to Rust that explains not just syntax but the "why" behind the language's safety, memory, and concurrency innovations—ideal for programmers with some coding experience who want to truly understand Rust rather than just memorize its rules. 【Book Arc】 - **Opening (~0%–9%)**: Introduces Rust's philosophy ("safe, concurrent, practical"), its open-source governance, the RFC→Nightly→Beta→Stable release pipeline, and the edition-based evolution strategy—setting up why the language is designed the way it is. - **Early (~9%–28%)**: Covers fundamental data types—tuples, structs, tuple structs, enums, and recursive types—with a strong emphasis on memory layout, zero-sized types, and the newtype idiom, establishing the building blocks for everything that follows. - **Early–Middle (~28%–38%)**: Explores Rust's expression-oriented nature: operators, statement-block expressions, diverging functions (the `!` type), and recursion, showing how Rust's grammar enforces clarity and safety by design. - **Middle (~38%–47%)**: Delves into methods, static functions, the `derive` attribute for automatic trait implementations, and pattern matching—including destructuring in function and closure parameters—demonstrating Rust's ergonomic abstraction tools. - **Middle (~47%–53%)**: Introduces the algebraic type system (ADT), mapping types to mathematical concepts (sums, products, powers) to explain how Rust's type combinations work, then transitions into macros as a compiler-extension mechanism. - **Late (~53% onward)**: Begins the core discussion of memory safety—enumerating the classic C/C++ pitfalls (null, wild, and dangling pointers) that Rust's ownership and borrowing model is designed to eliminate. 【Key Takeaways】 - **Rust's design goals are "safety, concurrency, and practicality"** (Opening): the language aims to prevent segfaults and guarantee thread safety without runtime overhead, making it a serious alternative to C/C++ for systems programming. - **The release process is as innovative as the language** (Opening): the RFC→Nightly→Beta→Stable pipeline and edition-based evolution allow rapid iteration while preserving stability—readers should understand this to navigate Rust's ecosystem and features. - **Zero-sized types are real in Rust** (Early): unlike C++, types like `()` and empty structs genuinely occupy 0 bytes, which has implications for memory layout and generic programming. - **The newtype idiom creates true type safety** (Early): wrapping a type in a tuple struct (e.g., `struct Inches(i32)`) creates a distinct type that prevents accidental mixing with the underlying type, unlike a simple type alias. - **Enums are far more powerful than in C/C++** (Early): Rust's enums can carry associated data (like tuples or structs), support pattern matching, and even be used as function constructors—forming the basis of the algebraic type system. - **Rust is primarily an expression language** (Early–Middle): statement blocks, `if` expressions, and even diverging functions (returning `!`) all produce values, enabling concise and composable code while enforcing type safety (e.g., banning chained comparisons and `if x = y`). - **The algebraic type system provides a mental model** (Middle): by mapping types to mathematical operations (sum for enums, product for structs, power for arrays), readers can reason about type cardinality and information content—a powerful lens for designing APIs. - **Memory safety is the core motivation** (Late): Rust's ownership and borrowing rules are a direct response to the classic pointer bugs (null, wild, dangling) that plague C/C++, and understanding these pitfalls is essential before diving into Rust's unique memory management. 【Reading Tips】 - **Skim the release-process chapter** (Opening): the RFC and edition details are useful context but not critical for coding; focus on the "why" of Rust's stability guarantees and move on. - **Deep-read the data types and expression chapters** (Early): these are foundational—pay special attention to the newtype idiom, enum variants as functions, and the rules around statement-block expressions, as they appear throughout the rest of the book. - **Treat the ADT chapter as a conceptual anchor** (Middle): the cardinality framework is a unique and valuable way to understand Rust's type system; if it feels abstract, revisit it after seeing more concrete examples. - **Expect forward references**: the author notes that some sections use concepts from later chapters (e.g., iterators, traits, generics). Don't get stuck—skim ahead or return later; the book is designed for cross-referencing. - **The memory-safety section is the heart**: the late chapters on pointers and ownership are where the book's core value lies. Read these slowly and experiment with the code examples to internalize the rules. 【Coverage Limits】 This guide is based on excerpts covering roughly the first half of the book (through the start of the memory-safety discussion). Later parts—ownership, borrowing, lifetimes, traits, concurrency, and practical facilities—are not covered in detail here.

Passage locations

Excerpt 1
明了一种自动垃圾回收的机制(Garbage Collection),故而程序员在绝大多数情况下不用再操心内存释放的问题。新发明的绝大多数编程语言都使用了基于各种高级算法的自动垃圾回收机制,因为它确实方便,解放了程序员的大脑,使大家能更专注于业务逻辑的部分。但是到目前为止,不管使用哪种算法的GC系统,在性能上都要付...
View in text
Excerpt 2
  s t r u c t Rust有一种数据类型叫作tuple struct,它就像是tuple和struct的混合。区别在于,tuple struct有名字,而它们的成员没有名字: struct Color(i32, i32, i32); struct Point(i32, i32, i32); 它们可以被想...
View in text
Excerpt 3
", !num1);     println!("{:08b}", num1 & num2);     println!("{:08b}", num1 | num2);     println!("{:08b}", num1 ^ num2);     println!("{:08b}", num1 << 4);...
View in text
Excerpt 4
    var1 : bool,     var2 : bool, } R类型包括了两个成员。分别是var1和var2。它的基数是: Cardinality(R) = Cardinality(var1) * Cardinality(var2) = 2 * 2 = 4 如果我们在结构体里面加入一个unit类型的成员...
View in text

Support Author

0.00
Total Amount (¥)
0
Donation Count
Please enter an amount Minimum ¥1

You will be redirected to Alipay to complete payment, then return here.

Recommended for You

Loading recommended books...
Failed to load, please try again later
Back to List