文章摘要
文章介绍了Rust语言中的核心类型和特性,重点讨论了标量类型,包括不同位数的有符号和无符号整数、布尔值、浮点数以及指针大小的整数类型,展示了Rust在类型系统上的丰富性和精确性。
文章总结
Rust的核心类型与特性
本文详细介绍了Rust编程语言中的核心类型和特性,旨在帮助读者更好地理解Rust的类型系统。Rust的类型系统分为多个类别,包括标量类型、复合类型、未定大小类型、借用引用类型、范围类型、实用类型、异步支持类型、匿名类型、不安全支持类型、原始指针类型、函数指针、恐慌支持、未占用类型以及各种操作符特性。
标量类型
标量类型包括各种整数类型(如u8、i16、u32等)、布尔类型(bool)、浮点类型(如f32、f64)、字符类型(char)以及指针大小的整数类型(usize、isize)。
复合类型
复合类型包括元组(Tuple)、结构体(Struct)、枚举(Enum)、联合体(Union)、数组(Array)以及单元类型(Unit)。
未定大小类型
未定大小类型包括未定大小的数组切片([T])、字符串切片(str)以及特性对象(dyn Trait)。
借用引用类型
借用引用类型包括共享引用(&T)和可变引用(&mut T)。
范围类型
范围类型包括半开范围(Range<T>)、有界上开范围(RangeTo<T>)、有界下开范围(RangeFrom<T>)、闭范围(RangeInclusive<T>)、有界上闭范围(RangeToInclusive<T>)以及无界范围(RangeFull)。
实用类型
实用类型包括选项类型(Option<T>)、结果类型(Result<T, E>)、比较结果(Ordering)以及预编译格式字符串(Arguments)。
异步支持类型
异步支持类型包括未来完成状态(Poll<T>)、任务上下文(Context<'a>)以及不可移动对象指针(Pin<T>)。
匿名类型
匿名类型包括函数项(fn foo())、闭包(|x| x > threshold)、异步函数(async fn foo())、异步闭包(async || f.await)以及存在类型(impl Trait)。
不安全支持类型
不安全支持类型包括内部可变性(UnsafeCell<T>)、抑制析构器(ManuallyDrop<T>)以及假装拥有类型(PhantomData<T>)。
原始指针类型
原始指针类型包括常量原始指针(*const T)和可变原始指针(*mut T)。
函数指针
函数指针类型为fn(T…) -> U。
恐慌支持
恐慌支持包括恐慌信息(PanicInfo)和恐慌位置(Location)。
未占用类型
未占用类型为!,表示永不返回的类型。
操作符特性
操作符特性包括访问操作符(如Deref、Index)、比较操作符(如PartialOrd、PartialEq)、算术操作符(如Add、Sub)、位操作符(如BitAnd、BitOr)、可调用特性(如FnOnce、FnMut)、内存管理特性(如Sized、Copy)、迭代特性(如Iterator、IntoIterator)、线程安全特性(如Send、Sync)、异步支持特性(如Future、Unpin)、恐慌安全特性(如UnwindSafe、RefUnwindSafe)以及终止特性(Termination)。
本文的目的是通过可视化的方式展示Rust类型系统的全貌,帮助读者理解哪些类型和特性是语言内置的,哪些可以通过库代码实现。Rust的清晰核心类型系统使得在没有动态堆的系统级环境中(如嵌入式固件)也能使用no_std库。
作者:Ben Williamson,2025年
评论总结
评论内容总结:
对整数范围标注的赞赏
- 评论1(craftkiller)表示非常喜欢文档中整数范围的标注,认为这对记忆具体范围非常有帮助。
引用:“I love the inclusion of the value ranges for the integers!”
引用:“Bookmarking this for reference later!”
- 评论1(craftkiller)表示非常喜欢文档中整数范围的标注,认为这对记忆具体范围非常有帮助。
对移动端滚动方式的肯定
- 评论2(smj-edison)赞赏文档在移动端从左到右的滚动方式,认为比折叠显示更友好。
引用:“I really like how it scrolls left-to-right on mobile, instead of collapsing down.”
- 评论2(smj-edison)赞赏文档在移动端从左到右的滚动方式,认为比折叠显示更友好。
对图形化内存布局和生命周期的推荐
- 评论3(goku12)推荐了一个资源网站,特别赞赏其图形化展示内存布局和生命周期的功能,认为这些信息与API参考一样重要。
引用:“One part that I love especially about it is that it represents lifetimes and memory layout in graphical format.”
引用:“They’re as invaluable as API references.”
- 评论3(goku12)推荐了一个资源网站,特别赞赏其图形化展示内存布局和生命周期的功能,认为这些信息与API参考一样重要。
对文档简洁性的评价
- 评论4(6r17)认为文档内容并不多,感觉像元素表一样简洁。
引用:“There aren’t that much of them actually! Almost feel like an element table.”
- 评论4(6r17)认为文档内容并不多,感觉像元素表一样简洁。
对PhantomData分类的疑问
- 评论5(adastra22)对PhantomData被归类为“不安全支持组”表示疑惑。
引用:“Why is PhantomData in the unsafe support group?”
- 评论5(adastra22)对PhantomData被归类为“不安全支持组”表示疑惑。