Crate core

1.6.0 · source ·
Expand description

Rust 核心库

Rust 核心库是 Rust 标准库 的无依赖 1 基础。 它是语言和标准库库之间的可移植粘合剂,它定义了所有 Rust 代码的内在和原始构建块。

它没有链接到上游库,没有系统库,也没有 libc。

核心库是 最小的: 它甚至不知道堆分配,也不提供并发或 I/O。 这些东西都需要平台集成,而核心库是与平台无关的。

如何使用核心库

请注意,所有这些细节目前都被认为是不稳定的。

这个库建立在一些现有符号的假设之上:

  • memcpymemcmpmemsetstrlen - 这些是通常由 LLVM 生成的核心内存例程。 此外,这个库可以显式地调用这些函数。 它们的签名与 C 中的签名相同。 这些函数通常由系统 libc 提供,但也可以由 编译器内置 crate 提供。

  • rust_begin_panic - 这个函数需要四个参数,一个 fmt::Arguments、一个 &'static str 和两个 u32。 这四个参数指示 panic 消息,调用 panic 的文件以及文件中的行和列。 定义此 panic 函数由该核心库的消费者决定; 它只要求返回 never。 这需要一个名为 panic_impllang 属性。

  • rust_eh_personality - 由编译器的故障机制使用。 这通常映射到 GCC 的 personality 函数,但是可以确保不会触发 panic 的 crate 永远不会调用此函数。 lang 属性称为 eh_personality


  1. 严格来说,有些符号是需要的,但是 它们并不总是必需的。 

Primitive Types

  • neverExperimental
    ! 类型,也称为 “never”。
  • 一个固定大小的数组,表示为 [T; N],用于元素类型 T 和非负编译时常量大小 N
  • 布尔类型。
  • 一个字符类型。
  • 32 位浮点类型 (特别是 IEEE 754-2008 中定义的 “binary32” 类型)。
  • 64 位浮点类型 (特别是 IEEE 754-2008 中定义的 “binary64” 类型)。
  • 函数指针,例如 fn(usize) -> bool
  • 8 位带符号整数类型。
  • 16 位带符号整数类型。
  • 32 位带符号整数类型。
  • 64 位带符号整数类型。
  • 128 位带符号整数类型。
  • 指针大小的有符号整数类型。
  • 原始的、不安全的指针 *const T*mut T
  • 参考,&T&mut T
  • 一个动态大小的视图到一个连续的序列,[T]。 这里的连续意味着元素的布局应使每个元素与其相邻元素之间的距离相同。
  • 字符串切片。
  • 一个有限异构序列,(T, U, ..)
  • 8 位无符号整数类型。
  • 16 位无符号整数类型。
  • 32 位无符号整数类型。
  • 64 位无符号整数类型。
  • 128 位无符号整数类型。
  • () 类型,也称为 “unit”。
  • 指针大小的无符号整数类型。

Modules

  • assert_matchesExperimental
    Unstable 模块包含不稳定的 assert_matches 宏。
  • async_iterExperimental
    可组合的异步迭代。
  • errorExperimental
    处理错误的接口。
  • intrinsicsExperimental
    编译器内部函数。
  • netExperimental
    IP 通信的网络原语。
  • panickingExperimental
    核心上的 panic 支持
  • simdExperimental
    便携式 SIMD 模块。
  • unicodeExperimental
  • 内存分配 API
  • 用于动态类型或类型反射的实用工具。
  • SIMD 和供应商内部功能模块。
  • 数组原始类型的实用工具。
  • 对 ASCII 字符串和字符的操作。
  • 用于处理借用数据的实用工具。
  • 可共享的可变容器。
  • char 原始类型的实用工具。
  • 不能隐式复制的类型的 Clone trait。
  • 用于比较和排序值的实用工具。
  • 用于类型之间的转换 traits。
  • Default trait 用于具有默认值的类型。
  • f32 单精度浮点类型的常量。
  • f64 双精度浮点类型的常量。
  • 特定于平台的类型,由 C 定义。
  • 用于格式化和打印字符串的实用工具。
  • 异步基本功能。
  • 通用哈希支持。
  • 对编译器的提示,该提示会影响应如何发出或优化代码。 提示可能是编译时或运行时。
  • i8Deprecation planned
    i8 primitive type 的冗余常量模块。
  • i16Deprecation planned
    i16 primitive type 的冗余常量模块。
  • i32Deprecation planned
    i32 primitive type 的冗余常量模块。
  • i64Deprecation planned
    i64 primitive type 的冗余常量模块。
  • i128Deprecation planned
    i128 primitive type 的冗余常量模块。
  • isizeDeprecation planned
    isize primitive type 的冗余常量模块。
  • 可组合的外部迭代。
  • 代表类型基本属性的原始 traits 和类型。
  • 处理内存的基本函数。
  • 内置数字类型的数字 traits 和函数。
  • 可重载的运算符。
  • 可选值。
  • 标准库中的 Panic 支持。
  • 键入将数据固定到其在内存中的位置的类型。
  • 核心 prelude
  • 此模块重导出原始类型,以允许使用可能不会被其他声明的类型隐藏的类型。
  • 通过裸指针手动管理内存。
  • Result 类型的错误处理。
  • 切片管理和操作。
  • 字符串操作。
  • 同步原语
  • 类型和 Traits 用于处理异步任务。
  • 时间量化。
  • u8Deprecation planned
    u8 primitive type 的冗余常量模块。
  • u16Deprecation planned
    u16 primitive type 的冗余常量模块。
  • u32Deprecation planned
    u32 primitive type 的冗余常量模块。
  • u64Deprecation planned
    u64 primitive type 的冗余常量模块。
  • u128Deprecation planned
    u128 primitive type 的冗余常量模块。
  • usizeDeprecation planned
    usize primitive type 的冗余常量模块。

Macros

  • concat_bytesExperimental
    将字面量连接成字节切片。
  • concat_identsExperimental
    将标识符串联为一个标识符。
  • const_format_argsExperimental
    format_args 相同,但可以在某些 const 上下文中使用。
  • format_args_nlExperimental
    format_args 相同,但最后添加了一个换行符。
  • log_syntaxExperimental
    将传递的 tokens 打印到标准输出中。
  • trace_macrosExperimental
    启用或禁用用于调试其他宏的跟踪功能。
  • 声明在运行时布尔表达式为 true
  • 断言两个表达式彼此相等 (使用 PartialEq)。
  • 断言两个表达式彼此不相等 (使用 PartialEq)。
  • 在编译时评估配置标志的布尔组合。
  • 扩展到调用它的列号。
  • 导致编译失败,并遇到给定的错误消息。
  • 将字面量串联成一个静态字符串切片。
  • 声明在运行时布尔表达式为 true
  • 断言两个表达式彼此相等。
  • 断言两个表达式彼此不相等。
  • 在编译时检查环境变量。
  • 扩展为调用该文件的文件名。
  • 构造其他字符串格式宏的参数。
  • 根据上下文将文件解析为表达式或项。
  • 包含一个文件作为对字节数组的引用。
  • 包含 UTF-8 编码的文件作为字符串。
  • 扩展为在其上被调用的行号。
  • 返回给定表达式是否与任何给定模式匹配。
  • 扩展为代表当前模块路径的字符串。
  • (可选) 在编译时检查环境变量。
  • 让当前线程 panics。
  • 对其参数进行字符串化。
  • 表示未完成的代码。
  • tryDeprecated
    解开结果或传播其错误。
  • 通过 panic 并带有 “not implemented” 的消息来指示未实现的代码。
  • 表示无法访问的代码。
  • 将格式化的数据写入缓冲区。
  • 将格式化的数据写入到缓冲区,并追加一个换行符。