基础组件 (Basic Components)
Option
Result
错误处理 (Error Handling)
std::error::Error
std::panic::catech_unwind
std::panic::AssertUnwindSafe
全局性:调用 panic::set_hook 会设置一个全局的钩子,无论程序中哪里发生恐慌,这个钩子都会被调用。一旦设置,全局范围内的所有恐慌都会触发这个钩子。
唯一性:你只能设置一个全局的钩子。如果你多次调用 panic::set_hook,后一次的钩子会覆盖前一次的钩子。
全面性:它并不区分恐慌的类型或来源,只要有恐慌发生,钩子就会被调用。
// 设置自定义的 panic 钩子来处理不同类型的恐慌信息
panic::set_hook(Box::new(|info| {
if let Some(location) = info.location() {
println!("Panic occurred in file '{}' at line {}", location.file(), location.line());
} else {
println!("Panic location unknown.");
}
if let Some(s) = info.payload().downcast_ref::<&str>() {
println!("Panic message: {}", s);
} else {
println!("Panic occurred.");
}
}));
// 触发一次恐慌来验证钩子
panic!("This is a panic!");
// 你可以捕获掉已存在的 hook
let _ = panic::take_hook();
std::panic::take_hook
字符串处理 (String Handling)
String
str
Chars
MatchIndices/Matches/RMatchIndices/RMatches
Split/RSplit/SplitN/RSplitN , 迭代器, collect转成集合
let text = "hello world this is rust";
// split 返回一个迭代器,collect 将该迭代器收集到一个 Vec<&str>
let parts: Vec<&str> = text.split(' ').collect();
Lines
SplitTerminator
RSplitTerminator
SplitWhitespace
智能指针 (Smart Pointers)
Box
//将数据分配到堆上,而不是栈上。对于大数据结构和动态大小的数据,堆分配是非常有用的。
let boxed_value = Box::new(42);
println!("Boxed value: {}", boxed_value);
//因为递归数据结构本质上需要动态大小,而 Rust 需要知道类型的确切大小。
enum List {
Cons(i32, Box<List>),
Nil,
}
Box 提供了一种简洁高效的内存管理方式,特别是在函数间传递所有权时。使用 Box 可以避免大数据结构的拷贝。
fn main() {
let my_box = Box::new(vec![1, 2, 3]);
process_box(my_box);
}
fn process_box(b: Box<Vec<i32>>) {
println!("Processing: {:?}", b);
}
在某些场景下,如果你已经知道字符串的实际长度,并且不再打算修改它,使用 Box<str> 可以有效减少堆分配次数。在堆上一次性分配所需的空间,有助于减少内存碎片
let s: Box<str> = "hello".to_string().into_boxed_str();
Box<str> 可以轻易地转换为其他类型使用(例如 &str, Box<dyn Display>),在进行特定类型操作时更方便。
let s: Box<str> = "hello".to_string().into_boxed_str();
let display: Box<dyn Display> = s as Box<dyn Display>;
println!("Boxed as Display: {}", display);
Rc
Arc
//一个非常重要的特性是,RefCell 不是线程安全的,即它仅适用于单线程场景。如果你试图在多线程环境中使用 RefCell,会遇到编译错误。
RefCell
let value = RefCell::new(5);
{
let val1 = value.borrow_mut();
// 引发 panic,因为 `RefCell` 只允许一个可变借用
let val2 = value.borrow_mut();
}
UnsafeCell
//Cell 适用于实现 Copy 特性的类型。对于复杂的数据类型(如 String),需要使用 RefCell。
Cell
//如果你需要在多线程环境中进行内部可变性操作,应该使用 Mutex 或 RwLock。
Mutex
RwLock
集合 (Collections)
Vec
VecDeque
LinkedList
BinaryHeap
HashMap
HashSet
BTreeMap
BTreeSet
并发 (Concurrency)
Arc
Mutex
RwLock
Condvar
Once
Barrier
Semaphore
use async_std::sync::Semaphore;
use async_std::task;
use std::sync::Arc;
use std::time::Duration;
#[async_std::main]
async fn main() {
// 创建一个信号量,允许的并发数为3
let semaphore = Arc::new(Semaphore::new(3));
// 启动多个任务,这些任务会共享信号量
let mut handles = Vec::new();
for i in 0..10 {
let semaphore = Arc::clone(&semaphore);
handles.push(task::spawn(async move {
let permit = semaphore.acquire().await;
println!("Task {} acquired permit.", i);
// 模拟任务耗时操作
task::sleep(Duration::from_secs(1)).await;
// 自动释放 permit
drop(permit);
println!("Task {} released permit.", i);
}));
}
// 等待所有任务完成
for handle in handles {
handle.await.unwrap();
}
}
Thread
ThreadLocal
mpsc (multi-producer, single-consumer)
输入输出 (IO)
File
OpenOptions
Metadata
Permissions
Stdin
Stdout
Stderr
Read
Write
Seek
BufReader
BufWriter
Lines
Chars
Bytes
Cursor
网络 (Networking)
TcpListener
TcpStream
UdpSocket
IpAddr
Ipv4Addr
Ipv6Addr
SocketAddr
SocketAddrV4
SocketAddrV6
时间 (Time)
Instant
SystemTime
Duration
UNIX_EPOCH
随机数 (Random Numbers)
rand (crate, not in std, but commonly used for randomness)
文件系统操作 (File System Operations)
Path
PathBuf
ReadDir
DirEntry
FileType
进程 (Process)
Command
Child
Output
ExitStatus
Stdio
格式化和解析 (Formatting and Parsing)
Formatter
Debug
Display
Binary
Octal
LowerHex
UpperHex
序列化和反序列化 (Serialization and Deserialization)
serde (external crate, but critical for many projects)
serde::Serialize
serde::Deserialize
环境 (Environment)
env::args
env::var
env::set_var
env::current_dir
env::set_current_dir
env::temp_dir
env::home_dir
异步编程 (Asynchronous Programming)
Future
Stream
内存操作 (Memory Operations)
Box
Rc
Weak
Cell
RefCell
UnsafeCell
ManuallyDrop
数值类型和转换 (Numeric Types and Conversion)
num::traits
num::BigInt
num::BigUint
num::Complex
num::Duration
num::FromPrimitive
安全相关类型 (Safety Related Types)
AssertUnwindSafe
CatchUnwind
指针类型 (Pointer Types)
NonNull
RawPtr
条件编译 (Conditional Compilation)
cfg
cfg_if
宏 (Macros)
format!
print!
println!
eprint!
eprintln!
panic!
assert!
debug_assert!
模块 (Modules)
std::io
std::fs
std::net
std::time
std::path
std::thread
std::sync
std::env
std::process
std::os
std::fmt
文件系统操作 (File System Operations)
std::fs::copy
std::fs::create_dir
std::fs::create_dir_all
std::fs::remove_dir
std::fs::remove_dir_all
std::fs::rename
std::fs::set_permissions
std::fs::read
std::fs::write
网络操作 (Network Operations)
std::net::TcpStream::connect
std::net::TcpListener::bind
std::net::UdpSocket::bind
std::net::UdpSocket::send_to
std::net::UdpSocket::recv_from
数学操作 (Mathematical Operations)
std::num::Wrapping
std::num::Saturating
std::num::NonZeroU8
std::num::NonZeroU16
std::num::NonZeroU32
std::num::NonZeroU64
std::num::NonZeroU128
std::num::NonZeroUsize
std::num::NonZeroI8
std::num::NonZeroI16
std::num::NonZeroI32
std::num::NonZeroI64
std::num::NonZeroI128
std::num::NonZeroIsize
并发原语 (Concurrency Primitives)
std::sync::atomic
std::sync::atomic::AtomicBool
std::sync::atomic::AtomicIsize
std::sync::atomic::AtomicUsize
std::sync::atomic::Ordering
std::sync::Once
std::sync::OnceState
时间 (Time Operations)
std::time::Duration
std::time::Instant
std::time::SystemTime
宏辅助工具 (Macro and Attributes)
std::prelude
std::marker
std::clone
std::borrow
std::cmp
std::ops
std::convert
常量 (Constants)
std::f32::consts
std::f64::consts
std::i8::MAX
std::i16::MAX
std::i32::MAX
std::i64::MAX
std::i128::MAX
std::usize::MAX
std::u8::MAX
std::u16::MAX
std::u32::MAX
std::u64::MAX
std::u128::MAX
类型系统 (Type System)
std::any::Any
std::any::TypeId
std::intrinsics
std::mem::transmute
环境 (Environment)
std::env::args
std::env::var
std::env::set_var
std::env::remove_var
std::env::vars
文件系统 (File System)
std::fs::metadata
std::fs::read_to_string
std::fs::write
随机数生成 (Random Number Generation)
rand::thread_rng
rand::Rng
rand::SeedableRng
迭代器 (Iterators)
std::iter::Iterator
std::iter::DoubleEndedIterator
std::iter::ExactSizeIterator
std::iter::FromIterator
std::iter::repeat
std::iter::once
std::iter::empty
std::iter::repeat_with
std::iter::successors
序列 (Sequences)
std::slice
std::slice::Iter
std::slice::IterMut
std::slice::Chunks
std::slice::ChunksMut
std::slice::Windows
内存操作 (Memory Operations)
std::mem::replace
std::mem::swap
std::mem::forget
std::mem::take
std::mem::size_of
非安全代码 (Unsafe Code)
std::ptr::null
std::ptr::null_mut
std::ptr::read
std::ptr::write
std::ptr::copy
std::ptr::eq
Unicode 操作 (Unicode Operations)
std::char
std::str::from_utf8
std::str::from_utf8_unchecked
std::str::pattern
元编程 (Metaprogramming)
std::marker::PhantomData
std::marker::Sized
std::marker::Unsize
类型转换 (Type Conversion)
std::convert::From
std::convert::Into
std::convert::TryFrom
std::convert::TryInto
原语比较 (Primitives Comparison)
std::cmp::PartialEq
std::cmp::Eq
std::cmp::PartialOrd
std::cmp::Ord
std::cmp::Ordering
运算符重载 (Operator Overloading)
std::ops::Add
std::ops::Sub
std::ops::Mul
std::ops::Div
std::ops::Rem
std::ops::BitAnd
std::ops::BitOr
std::ops::BitXor
std::ops::Not
std::ops::Shl
std::ops::Shr
std::ops::Deref
std::ops::DerefMut
std::ops::Index
std::ops::IndexMut
std::ops::Range
std::ops::RangeFrom
std::ops::RangeTo
std::ops::RangeInclusive
std::ops::RangeToInclusive
文件路径 (File Paths)
std::path::Path
std::path::PathBuf
平台特定功能 (Platform Specific Functionality)
std::os::unix
std::os::windows
std::os::raw
模块和命名空间 (Modules and Namespaces)
std::prelude
std::module_path
std::include
异常处理 (Exception Handling)
std::panic
std::panic::set_hook
std::panic::take_hook
std::panic::resume_unwind
断言 (Assertions)
std::assert_eq
std::assert_ne
std::debug_assert_eq
std::debug_assert_ne
配置与编译 (Configuration and Compilation)
std::cfg
std::cfg_if
运行时特性 (Runtime Features)
std::any
std::borrow
std::cell
std::char
std::cmp
std::convert
std::ffi
std::fmt
std::fs
std::io
std::iter
std::marker
std::mem
std::net
std::num
std::ops
std::option
std::path
std::pin
std::ptr
std::result
std::str
std::string
std::sync
std::task
std::thread
std::time
std::vec
安全相关类型 (Safety Related Types)
core::cell
core::ptr
core::sync
core::marker
内置宏 (Built-in Macros)
std::macro_rules
std::assert
std::assert_eq
std::assert_ne
std::cfg
std::column
std::compile_error
std::concat
std::concat_idents
std::dbg
std::env
std::eprint
std::eprintln
std::file
std::format
std::format_args
std::include
std::include_bytes
std::include_str
std::line
std::log_syntax
std::module_path
std::option_env
std::panic
std::print
std::println
std::stringify
std::thread_local
std::todo
std::try
std::unimplemented
std::unreachable
std::vec
平台特性 (Platform-Specific Features)
std::os::unix::io
std::os::unix::ffi
std::os::unix::fs
std::os::unix::process
std::os::unix::thread
std::os::windows::ffi
std::os::windows::fs
std::os::windows::io
std::os::windows::process
std::os::windows::raw
std::os::windows::thread
扩展特性 (Extended Features)
std::hint
std::intrinsics
std::macros
std::ptr
数据类型扩展 (Data Type Extensions)
std::collections
std::alloc
std::arch
std::env
std::fmt
std::fs
std::hash
std::io
std::num
std::os
std::panic
std::process
std::sync
std::task
std::thread
std::time
其他集合类 (Other Collections)
arrayvec
smallvec::SmallVec
indexmap::IndexMap
indexmap::IndexSet
位操作 (Bit Manipulation)
bit-set
bitvec::BitSlice
bitvec::BitVec
bit-vec::BitVec
类型照相 (Type Identification)
anyhow::Error
thiserror::Error
同步与并发 (Synchronization and Concurrency)
crossbeam::channel
crossbeam::deque
crossbeam::epoch
crossbeam::queue
crossbeam::utils
tokio::sync::Mutex
tokio::sync::RwLock
tokio::sync::Notify
tokio::sync::Semaphore
tokio::task::JoinHandle
数据格式 (Data Formats)
serde_json::Value
serde_yaml::Value
toml::Value
csv::Reader
csv::Writer
文件系统操作 (File System Operations)
tokio::fs::File
tokio::fs::OpenOptions
tokio::fs::read_to_string
tokio::fs::write
网络操作 (Network Operations)
tokio::net::TcpStream
tokio::net::TcpListener
tokio::net::UdpSocket
hyper::Client
hyper::Server
reqwest::Client
reqwest::Response
HTTP 处理 (HTTP Handling)
hyper::Request
hyper::Response
hyper::Body
warp::Filter
warp::Reply
路由和中间件 (Routing and Middleware)
actix_web::App
actix_web::web
axum::Router
rocket::Route
持久化与 ORM (Persistence and ORM)
diesel::prelude::*
sqlite::Connection
rusqlite::Connection
sea_orm::entity::prelude::*
动态分配 (Dynamic Memory Allocation)
bumpalo
slab::Slab
pool::Bag
文件路径 (File Paths)
std::path::Path
std::path::PathBuf
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。