Trait enumscribe::TryScribeStaticStr
source · pub trait TryScribeStaticStr {
// Required method
fn try_scribe(&self) -> Option<&'static str>;
}
Expand description
Trait for converting an enum to a static string slice, or None
if the conversion fails.
Like all of the traits provided by enumscribe, this should not be implemented manually; use
#[derive(TryScribeStaticStr)]
provided by the
enumscribe_derive crate instead.
When deriving this trait, you may specify the string that a particular variant should be
converted to by annotating it with #[enumscribe(str = "foo")]
. If this is omitted, the name
of the variant will be used instead.
You may also annotate a variant with #[enumscribe(ignore)]
, in which case attempting to
convert the variant to a string will always result in None
.
This trait can only be used if none of the enum’s variants use other
. If you have variants
that use other
, use TryScribeCowStr instead.
use enumscribe::TryScribeStaticStr;
#[derive(TryScribeStaticStr, PartialEq, Eq, Debug)]
enum Airport {
#[enumscribe(str = "LHR")]
Heathrow,
#[enumscribe(ignore)]
Gatwick,
UnnamedAirport,
}
assert_eq!(Airport::Heathrow.try_scribe(), Some("LHR"));
assert_eq!(Airport::Gatwick.try_scribe(), None);
assert_eq!(Airport::UnnamedAirport.try_scribe(), Some("UnnamedAirport"));
Required Methods§
sourcefn try_scribe(&self) -> Option<&'static str>
fn try_scribe(&self) -> Option<&'static str>
Converts this enum to a Option<&'static str>
.
Calling this method on a variant marked with #[enumscribe(ignore)]
will return None
.
Calling it on any other variant will return Some("...")
, where "..."
is the string
specified by the #[enumscribe(str = "...")]
attribute.