Какие скобки перед функцией в Rust? - PullRequest
0 голосов
/ 20 сентября 2019

Какова цель скобок в объявлениях функций.Например, в чем разница между следующим:

/// without brackets
pub fn new_with_now(now: T) -> SomeType

/// with brackets
pub fn new_with_now<T: Now>(now: T) -> SomeType

1 Ответ

5 голосов
/ 20 сентября 2019

Ответ в документе: Обобщение

Параметр типа задается как общий с использованием угловых скобок и верхнего регистра верблюда:.«Параметры общего типа» обычно представлены как.В Rust «универсальный» также описывает все, что принимает один или несколько параметров универсального типа.Любой тип, указанный в качестве параметра универсального типа, является универсальным, а все остальное является конкретным (не универсальным).

Ваше второе определение - это ограничение типа на T, требующее реализации Now (что бы это ни было).В свою очередь, под капотом компилятор будет генерировать вариант new_with_now для каждого используемого struct, который реализует Now и вызывает эту функцию в любой заданной точке.

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