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