// @generated by buffa-codegen. DO NOT EDIT.
// source: google/protobuf/struct.proto

pub mod value {
    #[allow(unused_imports)]
    use super::*;
    /// The kind of value.
    #[derive(Clone, PartialEq, Debug)]
    #[cfg_attr(feature = "arbitrary", derive(::arbitrary::Arbitrary))]
    pub enum Kind {
        NullValue(::buffa::EnumValue<super::super::super::NullValue>),
        NumberValue(f64),
        StringValue(::buffa::alloc::string::String),
        BoolValue(bool),
        StructValue(::buffa::alloc::boxed::Box<super::super::super::Struct>),
        ListValue(::buffa::alloc::boxed::Box<super::super::super::ListValue>),
    }
    impl ::buffa::Oneof for Kind {}
    impl From<super::super::super::Struct> for Kind {
        fn from(v: super::super::super::Struct) -> Self {
            Self::StructValue(::buffa::alloc::boxed::Box::new(v))
        }
    }
    impl From<super::super::super::Struct> for ::core::option::Option<Kind> {
        fn from(v: super::super::super::Struct) -> Self {
            Self::Some(Kind::from(v))
        }
    }
    impl From<super::super::super::ListValue> for Kind {
        fn from(v: super::super::super::ListValue) -> Self {
            Self::ListValue(::buffa::alloc::boxed::Box::new(v))
        }
    }
    impl From<super::super::super::ListValue> for ::core::option::Option<Kind> {
        fn from(v: super::super::super::ListValue) -> Self {
            Self::Some(Kind::from(v))
        }
    }
}
