官方documentation大量引用 T
:
enum Result<T, E> {
Ok(T),
Err(E),
}
我认为这些是占位符首字母缩略词。虽然 E
应该代表“错误”,但我不确定 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)
如果类型是泛型函数的返回类型:
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>
如果类型是
Iterator
的实现:I
. Example: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
等,通常按字母顺序排列。
关于rust - Rust 中的 Result<T, E> 中的 "T"代表什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60590029/