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'));
}
这段代码里面main函数中的reg_fn(S(A))
中的S(A)
是一个值?当作实参传入?
A是一个单元结构体,是可以直接当值用的是吗?
也就是
let a = A;
let b = S(a);
和
let b = S(A);
是一样的是吧?
那
let a1 = A;
let a2 = A;
a1,a2应该是一样的吧
1
共 5 条评论, 1 页
评论区
写评论从内容的角度,你可以认为他们“相等”,但在内存上,他们是栈上两个不同位置的变量,不是同一个
let a = A; 可以写成 let a = A {}; 这样就好理解了
A unit-like struct is a struct without any fields, defined by leaving off the list of fields entirely. Such a struct implicitly defines a constant of its type with the same name
--
👇
dakai-chen: 类型怎么声明就怎么创建,单元结构体类型名就可以直接创建出一个变量。
也就是类型名可以直接当值用是这个意思吧
--
👇
dakai-chen: 类型怎么声明就怎么创建,单元结构体类型名就可以直接创建出一个变量。
类型怎么声明就怎么创建,单元结构体类型名就可以直接创建出一个变量。