Что означает «Т» в результате в ржавчине? - PullRequest
0 голосов
/ 08 марта 2020

Официальная документация содержит множество ссылок на T:

enum Result<T, E> {
    Ok(T),
    Err(E),
}

Я понимаю, что это аббревиатуры-заполнители. Хотя E должно означать «ошибка», я не уверен, что означает T.

1 Ответ

8 голосов
/ 08 марта 2020

Это соглашение об именах для generi c t ype.

Соглашения для параметров типов generi c в Rust следующие:

  • Если тип является типом ошибки: E. Пример:

    fn err(self) -> Option<E>
    
  • Если тип является типом функции: F, G, et c. Пример:

    std::iter::Iterator::for_each<F>(self, f: F)
    where
        F: FnMut(Self::Item)
    
  • Если тип является предикатом: P. Пример:

    fn filter<P>(self, predicate: P) -> Filter<Self, P>
    where
        P: FnMut(&Self::Item) -> bool, 
    
  • Если тип является типом возврата функции generi c: R. Пример:

    fn with<F, R>(&'static self, f: F) -> R
    where
        F: FnOnce(&T) -> R, 
    
  • Если тип является типом ключа на некоторой карте: K. Пример:

    fn keys(&self) -> Keys<K, V>
    
  • Если тип является типом значения на некоторой карте: V. Пример:

    fn insert(&mut self, key: K, value: V) -> Option<V>
    
  • Если тип является реализацией Iterator: I. Пример:

    impl<I> Clone for Fuse<I> where
        I: Clone, 
    
  • Если тип является реализацией Read: R. Пример:

    fn chain<R: Read>(self, next: R) -> Chain<Self, R>
    where
        Self: Sized, 
    
  • Если тип является реализацией Write: W. Пример:

    struct BufWriter<W: Write> { /* fields omitted */ }
    
  • Если тип является реализацией ToSocketAddrs: A. Пример:
    fn connect<A: ToSocketAddrs>(addr: A) -> Result<TcpStream>
    
  • Все остальное: T, U и др. c.
...