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 {
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"
осталось понять, как сделать так, чтобы сделать так, чтоы можно было передавать любой вариант Kind'а...)АГ
enum 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"
осталось понять, как сделать так, чтобы сделать так, чтоы можно было передавать любой вариант Kind'а...)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> для всех вариантовАГ