"T" 在 Rust 中的 Result<T, E> 代表什么?
What does "T" stand for in Result<T, E> in Rust?
官方documentation大量引用T
:
enum Result<T, E> {
Ok(T),
Err(E),
}
我知道这些是占位符首字母缩略词。虽然 E
应该代表 "error",但我不确定 T
代表什么。
这是通用 t 类型的命名约定。
Rust 中的泛型类型通常以单个大写字母命名。 non_camel_case_types
警告强制名称以大写字母开头,但这只是一个警告,不会阻止您以其他方式命名。
T
是最常见的字母,你会经常看到这个项目真的不关心类型代表什么,但是在特定情况下还有一些其他常用字母如下:
如果类型是错误类型:E
。 Example:
fn err(self) -> Option<E>
如果类型是谓词:P
。 Example:
fn filter<P>(self, predicate: P) -> Filter<Self, P>
where
P: FnMut(&Self::Item) -> bool,
如果类型是函数类型:F
、G
等Example:
std::iter::Iterator::for_each<F>(self, f: F)
where
F: FnMut(Self::Item)
如果类型是泛型函数的 return 类型:R
。 Example:
fn with<F, R>(&'static self, f: F) -> R
where
F: FnOnce(&T) -> R,
如果类型是某个映射中的键类型:K
。 Example:
fn keys(&self) -> Keys<K, V>
如果类型是某个映射中的值类型:V
。 Example:
fn insert(&mut self, key: K, value: V) -> Option<V>
- 的实现
impl<I> Clone for Fuse<I> where
I: Clone,
- 的实现
fn chain<R: Read>(self, next: R) -> Chain<Self, R>
where
Self: Sized,
- 的实现
struct BufWriter<W: Write> { /* fields omitted */ }
如果类型是 ToSocketAddrs
: A
. Example:
的实现
fn connect<A: ToSocketAddrs>(addr: A) -> Result<TcpStream>
如果类型是路径(即实现AsRef
<
Path
>
): P
. Example:
pub fn open<P: AsRef<Path>>(path: P) -> Result<File>
其他所有内容:T
、U
等,通常按字母顺序排列。
官方documentation大量引用T
:
enum Result<T, E> {
Ok(T),
Err(E),
}
我知道这些是占位符首字母缩略词。虽然 E
应该代表 "error",但我不确定 T
代表什么。
这是通用 t 类型的命名约定。
Rust 中的泛型类型通常以单个大写字母命名。 non_camel_case_types
警告强制名称以大写字母开头,但这只是一个警告,不会阻止您以其他方式命名。
T
是最常见的字母,你会经常看到这个项目真的不关心类型代表什么,但是在特定情况下还有一些其他常用字母如下:
如果类型是错误类型:
E
。 Example:fn err(self) -> Option<E>
如果类型是谓词:
P
。 Example:fn filter<P>(self, predicate: P) -> Filter<Self, P> where P: FnMut(&Self::Item) -> bool,
如果类型是函数类型:
F
、G
等Example:std::iter::Iterator::for_each<F>(self, f: F) where F: FnMut(Self::Item)
如果类型是泛型函数的 return 类型:
R
。 Example:fn with<F, R>(&'static self, f: F) -> R where F: FnOnce(&T) -> R,
如果类型是某个映射中的键类型:
K
。 Example:fn keys(&self) -> Keys<K, V>
如果类型是某个映射中的值类型:
V
。 Example:fn insert(&mut self, key: K, value: V) -> Option<V>
- 的实现
impl<I> Clone for Fuse<I> where I: Clone,
- 的实现
fn chain<R: Read>(self, next: R) -> Chain<Self, R> where Self: Sized,
- 的实现
struct BufWriter<W: Write> { /* fields omitted */ }
如果类型是
的实现ToSocketAddrs
:A
. Example:fn connect<A: ToSocketAddrs>(addr: A) -> Result<TcpStream>
如果类型是路径(即实现
AsRef
<
Path
>
):P
. Example:pub fn open<P: AsRef<Path>>(path: P) -> Result<File>
其他所有内容:
T
、U
等,通常按字母顺序排列。