blob: 071630c7a0b8c50c7316ab93af9af77ffa3aa2f8 [file] [log] [blame]
//! Trait for well-known wrapper types
use protobuf::well_known_types::wrappers::BoolValue;
use protobuf::well_known_types::wrappers::BytesValue;
use protobuf::well_known_types::wrappers::DoubleValue;
use protobuf::well_known_types::wrappers::FloatValue;
use protobuf::well_known_types::wrappers::Int32Value;
use protobuf::well_known_types::wrappers::Int64Value;
use protobuf::well_known_types::wrappers::StringValue;
use protobuf::well_known_types::wrappers::UInt32Value;
use protobuf::well_known_types::wrappers::UInt64Value;
/// Well-known wrapper types have single field.
/// This trait operations return pointers to that field.
pub(crate) trait WellKnownWrapper {
type Underlying;
fn get_ref(&self) -> &Self::Underlying;
fn get_mut(&mut self) -> &mut Self::Underlying;
}
impl WellKnownWrapper for DoubleValue {
type Underlying = f64;
fn get_ref(&self) -> &f64 {
&self.value
}
fn get_mut(&mut self) -> &mut f64 {
&mut self.value
}
}
impl WellKnownWrapper for FloatValue {
type Underlying = f32;
fn get_ref(&self) -> &f32 {
&self.value
}
fn get_mut(&mut self) -> &mut f32 {
&mut self.value
}
}
impl WellKnownWrapper for Int64Value {
type Underlying = i64;
fn get_ref(&self) -> &i64 {
&self.value
}
fn get_mut(&mut self) -> &mut i64 {
&mut self.value
}
}
impl WellKnownWrapper for UInt64Value {
type Underlying = u64;
fn get_ref(&self) -> &u64 {
&self.value
}
fn get_mut(&mut self) -> &mut u64 {
&mut self.value
}
}
impl WellKnownWrapper for Int32Value {
type Underlying = i32;
fn get_ref(&self) -> &i32 {
&self.value
}
fn get_mut(&mut self) -> &mut i32 {
&mut self.value
}
}
impl WellKnownWrapper for UInt32Value {
type Underlying = u32;
fn get_ref(&self) -> &u32 {
&self.value
}
fn get_mut(&mut self) -> &mut u32 {
&mut self.value
}
}
impl WellKnownWrapper for BoolValue {
type Underlying = bool;
fn get_ref(&self) -> &bool {
&self.value
}
fn get_mut(&mut self) -> &mut bool {
&mut self.value
}
}
impl WellKnownWrapper for StringValue {
type Underlying = String;
fn get_ref(&self) -> &String {
&self.value
}
fn get_mut(&mut self) -> &mut String {
&mut self.value
}
}
impl WellKnownWrapper for BytesValue {
type Underlying = Vec<u8>;
fn get_ref(&self) -> &Vec<u8> {
&self.value
}
fn get_mut(&mut self) -> &mut Vec<u8> {
&mut self.value
}
}