as_variant

Crates.ioas_variant
lib.rsas_variant
version1.2.0
sourcesrc
created_at2022-09-13 15:35:54.769714
updated_at2023-08-09 11:28:45.096988
descriptionA simple macro to convert enums with newtype variants to `Option`s
homepage
repositoryhttps://github.com/jplatte/as_variant
max_upload_size
id664689
size23,785
Jonas Platte (jplatte)

documentation

README

as_variant

docs.rs

A simple Rust macro to convert enums with newtype variants to Options.

Basic example:

use std::ops::Deref;

use as_variant::as_variant;

enum Value {
    Integer(i64),
    String(String),
    Array(Vec<Value>),
}

impl Value {
    pub fn as_integer(&self) -> Option<i64> {
        as_variant!(self, Self::Integer).copied()
    }

    pub fn as_str(&self) -> Option<&str> {
        as_variant!(self, Self::String).map(Deref::deref)
    }

    pub fn as_array(&self) -> Option<&[Value]> {
        as_variant!(self, Self::Array).map(Deref::deref)
    }

    pub fn into_string(self) -> Option<String> {
        as_variant!(self, Self::String)
    }

    pub fn into_array(self) -> Option<Vec<Value>> {
        as_variant!(self, Self::Array)
    }
}
Commit count: 4

cargo fmt