//! 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; fn get_ref(&self) -> &Vec { &self.value } fn get_mut(&mut self) -> &mut Vec { &mut self.value } }