struct A; // Concrete type `A`.
struct S(A); // Concrete type `S`.
struct SGen<T>(T); // Generic type `SGen`.
fn reg_fn(_s: S) {}
fn gen_spec_t(_s: SGen<A>) {}
fn gen_spec_i32(_s: SGen<i32>) {}
fn generic<T>(_s: SGen<T>) {}
fn main() {
// Using the non-generic functions
reg_fn(S(A)); // Concrete type.
gen_spec_t(SGen(A)); // Implicitly specified type parameter `A`.
gen_spec_i32(SGen(6)); // Implicitly specified type parameter `i32`.
// Explicitly specified type parameter `char` to `generic()`.
generic::<char>(SGen('a'));
// Implicitly specified type parameter `char` to `generic()`.
generic(SGen('c'));
}
===
最开始三句
struct A; // Concrete type `A`.
struct S(A); // Concrete type `S`.
struct SGen<T>(T); // Generic type `SGen`.
是定义了三个结构体类型对吧, 还没有定义一个数据量吧,
main函数里面为什么可以直接reg_fn(S(A));
这样用啊?
不应该要先定义let s_a = S(A));
, 再调用吗reg_fn(s_a);
1
共 2 条评论, 1 页
评论区
写评论有啥区别? +1
--
👇
bestgopher: 不应该要先定义let s_a = S(A));, 再调用吗reg_fn(s_a);
有啥区别?
不应该要先定义let s_a = S(A));, 再调用吗reg_fn(s_a);
有啥区别?