Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use std::fmt;
- pub enum ApiFlavor {
- Foo,
- Bar,
- }
- impl fmt::Display for ApiFlavor {
- fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
- match self {
- ApiFlavor::Foo => f.write_str("Foo"),
- ApiFlavor::Bar => f.write_str("Bar"),
- }
- }
- }
- pub struct Context {
- username: Option<String>,
- api_flavor: Option<ApiFlavor>,
- }
- pub fn print_ctx(ctx: &Context) {
- println!(
- " API: {}",
- ctx.api_flavor.as_ref()
- .map(ApiFlavor::to_string)
- .unwrap_or_else(|| String::from("<none>"))
- );
- // better
- println!(
- " API: {}",
- ctx.api_flavor.as_ref()
- .map_or_else(|| String::from("<none>"), ApiFlavor::to_string)
- );
- println!(
- " Username: {}",
- ctx.username.as_ref().unwrap_or(&String::from("<none>"))
- );
- // better
- println!(
- " Username: {}",
- ctx.username.as_ref()
- .map_or_else(|| String::from("<none>"), String::to_string)
- );
- }
- pub fn main() {
- print_ctx(&Context {
- username: Some("Alice".into()),
- api_flavor: Some(ApiFlavor::Foo),
- });
- print_ctx(&Context {
- username: None,
- api_flavor: None,
- });
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement