macro_rules! impl_as_mut { ($this:ident $(<$($generic:ident),+>)? => $inner:ty) => { ... }; ($this:ident $(<$($generic:ident),+>)? => $field:ident : $inner:ty) => { ... }; }
Expand description
Implement AsMut
for a struct.
The first argument is that of the struct to create the impl for and the second is the type to produce a reference for.
ยงExamples
With a newtype struct:
use impl_more::{impl_as_ref, impl_as_mut};
struct Foo(String);
impl_as_ref!(Foo => String);
impl_as_mut!(Foo => String);
let mut foo = Foo("bar".to_owned());
foo.as_mut().push('!');
assert_eq!(foo.as_ref(), "bar!");
With a named field struct and type parameters:
use impl_more::{impl_as_ref, impl_as_mut};
struct Foo<T> { inner: T }
impl_as_ref!(Foo<T> => inner: T);
impl_as_mut!(Foo<T> => inner: T);
let mut foo = Foo { inner: "bar".to_owned() };
foo.as_mut().push('!');
assert_eq!(foo.as_ref(), "bar!");