Каков синтаксис: `instance.method :: <SomeThing>()`? - PullRequest
0 голосов
/ 17 сентября 2018

Я прочитал приведенный ниже синтаксис из byteorder :

rdr.read_u16::<BigEndian>()

Я не могу найти документацию, которая объясняет синтаксис instance.method::<SomeThing>()

1 Ответ

0 голосов
/ 17 сентября 2018

Эта конструкция называется турбовиной.Если вы ищете это утверждение, вы обнаружите его определение и его использование.

Хотя первое издание Rust Programming Language устарело, я чувствую, что этот конкретный раздел лучше, чем во второй книге .

Цитирование второго издания:

path::<...>, method::<...>
Указывает параметры для универсальноготип, функция или метод в выражении;часто упоминается как turbofish (например, "42".parse::<i32>())

. Вы можете использовать его в любой ситуации, когда компилятор не может определить параметр типа, например,

fn main () {
    let a = (0..255).sum();
    let b = (0..255).sum::<u32>();
    let c: u32 = (0..255).sum();
}

a не работает, потому что не может определить тип переменной.
b работает, потому что мы указываем параметр типа напрямую с синтаксисом turbofish.
c работает, потому что мы указываем типc напрямую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...