Rust中的函数之前有哪些括号?

aug*_*uag 0 rust

函数声明中括号的作用是什么。例如,以下内容之间有什么区别:

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

/// with brackets
pub fn new_with_now<T: Now>(now: T) -> SomeType
Run Code Online (Sandbox Code Playgroud)

Séb*_*uld 5

答案在文档中:泛型

通过使用尖括号和大驼峰式大小写,将类型参数指定为通用。“通用类型参数”通常表示为。在Rust中,“泛型”还描述了接受一个或多个泛型类型参数的任何内容。指定为通用类型参数的任何类型都是通用的,其他所有都是具体的(非通用)。

您的第二个定义是T要求实现的类型限制Now(无论可能是什么)。反过来,在幕后,编译器将为在任何给定点实现和调用此函数的new_with_now每个使用者生成的变体。structNow