diff --git a/examples/mutation_example.rs b/examples/mutation_example.rs new file mode 100644 index 0000000..19ba749 --- /dev/null +++ b/examples/mutation_example.rs @@ -0,0 +1,14 @@ +use tagged_core::Tagged; + +#[derive(Debug)] +struct Org; + +type OrgName = Tagged; + +fn main() { + let mut name = OrgName::new("Codefonsi".into()); + + name.set("New Org Name".into()); + + println!("Updated Org Name: {}", name.value()); +} diff --git a/tagged-core/src/lib.rs b/tagged-core/src/lib.rs index 1f160f8..9739abb 100644 --- a/tagged-core/src/lib.rs +++ b/tagged-core/src/lib.rs @@ -158,6 +158,19 @@ impl<'a, T, Tag> IntoIterator for &'a Tagged, Tag> { } } + +impl Tagged { + /// Not allowed feature - Get a mutable reference to the internal value + // pub fn value_mut(&mut self) -> &mut T { + // &mut self.value + // } + + /// Replace the inner value + pub fn set(&mut self, new_value: T) { + self.value = new_value; + } +} + // For all common primitive types // macro_rules! impl_from_tagged { // ($($t:ty),*) => {