pub trait MutableObject {
type Key: ?Sized;
type Target;
type Object;
// Required methods
fn insert<K, V>(
&mut self,
k: K,
v: V,
) -> Result<Option<Self::Target>, AccessError>
where Self::Key: From<K> + Hash + Eq,
V: Into<Self::Target>;
fn remove<Q>(&mut self, k: &Q) -> Result<Option<Self::Target>, AccessError>
where Self::Key: Borrow<Q>,
Q: ?Sized + Hash + Eq + Ord;
fn get_mut<Q>(&mut self, k: &Q) -> Option<&mut Self::Target>
where Self::Key: Borrow<Q>,
Q: ?Sized + Hash + Eq + Ord;
// Provided methods
fn try_insert<K, V>(&mut self, k: K, v: V) -> Option<Self::Target>
where Self::Key: From<K> + Hash + Eq,
V: Into<Self::Target> { ... }
fn try_remove<Q>(&mut self, k: &Q) -> Option<Self::Target>
where Self::Key: Borrow<Q>,
Q: ?Sized + Hash + Eq + Ord { ... }
}
Expand description
Mutatability for object like values
Required Associated Types§
Required Methods§
sourcefn insert<K, V>(
&mut self,
k: K,
v: V,
) -> Result<Option<Self::Target>, AccessError>
fn insert<K, V>( &mut self, k: K, v: V, ) -> Result<Option<Self::Target>, AccessError>
Insert into this Value
as an Object
.
Will return an AccessError::NotAnObject
if called
on a Value
that isn’t an object - otherwise will
behave the same as HashMap::insert
§Errors
Will return Err
if self
is not an object.
sourcefn remove<Q>(&mut self, k: &Q) -> Result<Option<Self::Target>, AccessError>
fn remove<Q>(&mut self, k: &Q) -> Result<Option<Self::Target>, AccessError>
Remove from this Value
as an Object
.
Will return an AccessError::NotAnObject
if called
on a Value
that isn’t an object - otherwise will
behave the same as HashMap::remove
§Errors
Will return Err
if self
is not an Object.
Provided Methods§
sourcefn try_insert<K, V>(&mut self, k: K, v: V) -> Option<Self::Target>
fn try_insert<K, V>(&mut self, k: K, v: V) -> Option<Self::Target>
Tries to insert into this Value
as an Object
.
If the Value
isn’t an object this opoeration will
return None
and have no effect.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.