'a
&'a T
&'a mut T
fn<'a>(x: &'a T) -> &'a T
struct<'a> StructName<'a> { field: &'a T }
impl<'a> StructName<'a> { fn method(&'a self) -> &'a T }
impl<'a> Trait for StructName<'a> { fn method(&'a self) -> &'a T }
fn<'a, 'b>(x: &'a T, y: &'b T) -> &'a T
fn<'a>(x: &'a T) -> &'a str
fn<'a>(x: &'a T) -> &'a [T]
fn<'a>(x: &'a T) -> &'a dyn Trait
fn<'a>(x: &'a T) -> impl Trait + 'a
fn<'a>(x: &'a T) -> Box<dyn Trait + 'a>
fn<'a>(x: &'a T) -> &'a [u8]
fn<'a>(x: &'a T) -> &'a mut [u8]
fn<'a>(x: &'a T) -> Option<&'a T>
fn<'a>(x: &'a T) -> Result<&'a T, E>
fn<'a>(x: &'a T) -> &'a str
fn<'a>(x: &'a T) -> &'a String
fn<'a>(x: &'a T) -> &'a Vec<T>
fn<'a>(x: &'a T) -> &'a mut Vec<T>
fn<'a>(x: &'a T) -> &'a HashMap<K, V>
fn<'a>(x: &'a T) -> &'a mut HashMap<K, V>
fn<'a>(x: &'a T) -> &'a BTreeMap<K, V>
fn<'a>(x: &'a T) -> &'a mut BTreeMap<K, V>
fn<'a>(x: &'a T) -> &'a HashSet<T>
fn<'a>(x: &'a T) -> &'a mut HashSet<T>
fn<'a>(x: &'a T) -> &'a BTreeSet<T>
fn<'a>(x: &'a T) -> &'a mut BTreeSet<T>
fn<'a>(x: &'a T) -> &'a Rc<T>
fn<'a>(x: &'a T) -> &'a Arc<T>
fn<'a>(x: &'a T) -> &'a Cell<T>
fn<'a>(x: &'a T) -> &'a RefCell<T>
fn<'a>(x: &'a T) -> &'a Mutex<T>
fn<'a>(x: &'a T) -> &'a RwLock<T>
fn<'a>(x: &'a T) -> &'a AtomicBool
fn<'a>(x: &'a T) -> &'a AtomicIsize
fn<'a>(x: &'a T) -> &'a AtomicUsize
fn<'a>(x: &'a T) -> &'a AtomicI32
fn<'a>(x: &'a T) -> &'a AtomicU32
fn<'a>(x: &'a T) -> &'a AtomicI64
fn<'a>(x: &'a T) -> &'a AtomicU64
fn<'a>(x: &'a T) -> &'a AtomicPtr<T>
fn<'a>(x: &'a T) -> &'a AtomicRefCell<T>
fn<'a>(x: &'a T) -> &'a PhantomData<T>
fn<'a>(x: &'a T) -> &'a PhantomPinned
fn<'a>(x: &'a T) -> &'a Pin<Box<T>>
fn<'a>(x: &'a T) -> &'a Pin<Rc<T>>
fn<'a>(x: &'a T) -> &'a Pin<Arc<T>>
fn<'a>(x: &'a T) -> &'a Pin<RefCell<T>>
以下是 Rust 生命周期的用法及其解释:
1. 'a
生命周期参数 'a
用于标识引用的生命周期。
fn example<'a>(x: &'a i32) -> &'a i32 {
x
}
2. &'a T
带有生命周期参数的不可变引用。
fn example<'a>(x: &'a i32) -> &'a i32 {
x
}
3. &'a mut T
带有生命周期参数的可变引用。
fn example<'a>(x: &'a mut i32) -> &'a mut i32 {
x
}
4. fn<'a>(x: &'a T) -> &'a T
函数接受和返回带有生命周期参数的引用。
fn example<'a>(x: &'a i32) -> &'a i32 {
x
}
5. struct<'a> StructName<'a> { field: &'a T }
结构体中的生命周期参数。
struct Example<'a> {
field: &'a i32,
}
6. impl<'a> StructName<'a> { fn method(&'a self) -> &'a T }
结构体方法中的生命周期参数。
impl<'a> Example<'a> {
fn get_field(&'a self) -> &'a i32 {
self.field
}
}
7. impl<'a> Trait for StructName<'a> { fn method(&'a self) -> &'a T }
实现特征时使用生命周期参数。
impl<'a> Display for Example<'a> {
fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
write!(f, "{}", self.field)
}
}
8. fn<'a, 'b>(x: &'a T, y: &'b T) -> &'a T
函数接受多个生命周期参数。
fn example<'a, 'b>(x: &'a i32, y: &'b i32) -> &'a i32 {
x
}
9. fn<'a>(x: &'a T) -> &'a str
函数返回带有生命周期参数的字符串切片。
fn example<'a>(x: &'a str) -> &'a str {
x
}
10. fn<'a>(x: &'a T) -> &'a [T]
函数返回带有生命周期参数的切片。
fn example<'a>(x: &'a [i32]) -> &'a [i32] {
x
}
11. fn<'a>(x: &'a T) -> &'a dyn Trait
函数返回带有生命周期参数的特征对象。
fn example<'a>(x: &'a dyn Display) -> &'a dyn Display {
x
}
12. fn<'a>(x: &'a T) -> impl Trait + 'a
函数返回实现特征的类型,并带有生命周期参数。
fn example<'a>(x: &'a i32) -> impl Display + 'a {
x
}
13. fn<'a>(x: &'a T) -> Box<dyn Trait + 'a>
函数返回带有生命周期参数的特征对象的 Box。
fn example<'a>(x: &'a i32) -> Box<dyn Display + 'a> {
Box::new(x)
}
14. fn<'a>(x: &'a T) -> &'a [u8]
函数返回带有生命周期参数的字节切片。
fn example<'a>(x: &'a [u8]) -> &'a [u8] {
x
}
15. fn<'a>(x: &'a T) -> &'a mut [u8]
函数返回带有生命周期参数的可变字节切片。
fn example<'a>(x: &'a mut [u8]) -> &'a mut [u8] {
x
}
16. fn<'a>(x: &'a T) -> Option<&'a T>
函数返回带有生命周期参数的 Option。
fn example<'a>(x: &'a i32) -> Option<&'a i32> {
Some(x)
}
17. fn<'a>(x: &'a T) -> Result<&'a T, E>
函数返回带有生命周期参数的 Result。
fn example<'a>(x: &'a i32) -> Result<&'a i32, &'static str> {
Ok(x)
}
18. fn<'a>(x: &'a T) -> &'a str
函数返回带有生命周期参数的字符串切片。
fn example<'a>(x: &'a str) -> &'a str {
x
}
19. fn<'a>(x: &'a T) -> &'a String
函数返回带有生命周期参数的字符串引用。
fn example<'a>(x: &'a String) -> &'a String {
x
}
20. fn<'a>(x: &'a T) -> &'a Vec<T>
函数返回带有生命周期参数的向量引用。
fn example<'a>(x: &'a Vec<i32>) -> &'a Vec<i32> {
x
}
21. fn<'a>(x: &'a T) -> &'a mut Vec<T>
函数返回带有生命周期参数的可变向量引用。
fn example<'a>(x: &'a mut Vec<i32>) -> &'a mut Vec<i32> {
x
}
22. fn<'a>(x: &'a T) -> &'a HashMap<K, V>
函数返回带有生命周期参数的哈希映射引用。
fn example<'a, K, V>(x: &'a HashMap<K, V>) -> &'a HashMap<K, V> {
x
}
23. fn<'a>(x: &'a T) -> &'a mut HashMap<K, V>
函数返回带有生命周期参数的可变哈希映射引用。
fn example<'a, K, V>(x: &'a mut HashMap<K, V>) -> &'a mut HashMap<K, V> {
x
}
24. fn<'a>(x: &'a T) -> &'a BTreeMap<K, V>
函数返回带有生命周期参数的 B 树映射引用。
fn example<'a, K, V>(x: &'a BTreeMap<K, V>) -> &'a BTreeMap<K, V> {
x
}
25. fn<'a>(x: &'a T) -> &'a mut BTreeMap<K, V>
函数返回带有生命周期参数的可变 B 树映射引用。
fn example<'a, K, V>(x: &'a mut BTreeMap<K, V>) -> &'a mut BTreeMap<K, V> {
x
}
26. fn<'a>(x: &'a T) -> &'a HashSet<T>
函数返回带有生命周期参数的哈希集合引用。
fn example<'a, T>(x: &'a HashSet<T>) -> &'a HashSet<T> {
x
}
27. fn<'a>(x: &'a T) -> &'a mut HashSet<T>
函数返回带有生命周期参数的可变哈希集合引用。
fn example<'a, T>(x: &'a mut HashSet<T>) -> &'a mut HashSet<T> {
x
}
28. fn<'a>(x: &'a T) -> &'a BTreeSet<T>
函数返回带有生命周期参数的 B 树集合引用。
fn example<'a, T>(x: &'a BTreeSet<T>) -> &'a BTreeSet<T> {
x
}
29. fn<'a>(x: &'a T) -> &'a mut BTreeSet<T>
函数返回带有生命周期参数的可变 B 树集合引用。
fn example<'a, T>(x: &'a mut BTreeSet<T>) -> &'a mut BTreeSet<T> {
x
}
30. fn<'a>(x: &'a T) -> &'a Rc<T>
函数返回带有生命周期参数的 Rc 引用。
fn example<'a, T>(x: &'a Rc<T>) -> &'a Rc<T> {
x
}
31. fn<'a>(x: &'a T) -> &'a Arc<T>
函数返回带有生命周期参数的 Arc 引用。
fn example<'a, T>(x: &'a Arc<T>) -> &'a Arc<T> {
x
}
32. fn<'a>(x: &'a T) -> &'a Cell<T>
函数返回带有生命周期参数的 Cell 引用。
fn example<'a, T>(x: &'a Cell<T>) -> &'a Cell<T> {
x
}
33. fn<'a>(x: &'a T) -> &'a RefCell<T>
函数返回带有生命周期参数的 RefCell 引用。
fn example<'a, T>(x: &'a RefCell<T>) -> &'a RefCell<T> {
x
}
34. fn<'a>(x: &'a T) -> &'a Mutex<T>
函数返回带有生命周期参数的 Mutex 引用。
fn example<'a, T>(x: &'a Mutex<T>) -> &'a Mutex<T> {
x
}
35. fn<'a>(x: &'a T) -> &'a RwLock<T>
函数返回带有生命周期参数的 RwLock 引用。
fn example<'a, T>(x: &'a RwLock<T>) -> &'a RwLock<T> {
x
}
36. fn<'a>(x: &'a T) -> &'a AtomicBool
函数返回带有生命周期参数的 AtomicBool 引用。
fn example<'a>(x: &'a AtomicBool) -> &'a AtomicBool {
x
}
37. fn<'a>(x: &'a T) -> &'a AtomicIsize
函数返回带有生命周期参数的 AtomicIsize 引用。
fn example<'a>(x: &'a AtomicIsize) -> &'a AtomicIsize {
x
}