Enumの中身を外側で宣言したら別物ですよ
Rust で、enum の中身に使うバリアントを外側で宣言したら意味ないという話
当たり前のことを言っているだけ
全然理解していなかった。はずかしいlemonadern.icon (2023/3/31)
具体的には以下
code:rs
struct A {
x: char,
}
enum Parent {
A,
}
ここで、struct A と Parent::A は別物
外で宣言した struct を Parent の宣言で利用しているわけではない
code:rs
struct A {
x: char,
}
struct B;
enum Parent {
A,
B,
}
impl Parent {
fn is_a(&self) -> bool {
match self {
Parent::A => true,
_ => false,
}
}
}
fn recieve_parent(arg: Parent) -> bool {
arg.is_a()
}
fn main() {
let enum_a = recieve_parent(Parent::A);
let struct_a = recieve_parent(A { x: 'a' }); // mismatched types \n expected enum Parent, found struct A
}
Parent の値を渡しているわけではないので型がマッチしない。あたりまえ