a
enum KindVariant { Foo, Bar }
.Size: a a a
a
enum KindVariant { Foo, Bar }
.АГ
enum KindVariant { Foo, Bar }
.r
a
АГ
a
println!("{:?}", Kind::Foo);
//19 | println!("{:?}", Kind::Foo);
// | ^^^^^^^^^ `fn(Foo) -> Kind {Kind::Foo}` cannot be formatted using `{:?}` because it doesn't implement `std::fmt::Debug`
a
r
EG
fn(Foo) -> Kind
это вполне называемый типEG
MB
fn(Foo) -> Kind
это вполне называемый типr
fn(Foo) -> Kind
это вполне называемый типMB
EG
a
enum Kind {осталось понять, как сделать так, чтобы сделать так, чтоы можно было передавать любой вариант Kind'а...)
Foo(Foo),
Bar(Bar),
}
fn get_name(s: &str) -> String {
s.split(" :: ").last().unwrap().to_string()
}
fn main() {
println!("{:?}", get_name(stringify!(Kind::Foo)));
}
// "Foo"
АГ
enum Kind {осталось понять, как сделать так, чтобы сделать так, чтоы можно было передавать любой вариант Kind'а...)
Foo(Foo),
Bar(Bar),
}
fn get_name(s: &str) -> String {
s.split(" :: ").last().unwrap().to_string()
}
fn main() {
println!("{:?}", get_name(stringify!(Kind::Foo)));
}
// "Foo"
r
Foo(Foo)
, то name можно прицепить к struct Foo
. Сделать trait Name: Into<Kind> { fn name() -> &'static str; } и макросами реализовать Name и Into<Kind> для всех вариантовa
a
Foo(Foo)
, то name можно прицепить к struct Foo
. Сделать trait Name: Into<Kind> { fn name() -> &'static str; } и макросами реализовать Name и Into<Kind> для всех вариантовАГ