Module value_bag::fill [−][src]
Deferred value initialization.
The Fill
trait is a way to bridge APIs that may not be directly
compatible with other constructor methods.
The Fill
trait is automatically implemented for closures, so can usually
be used in libraries that can’t implement the trait themselves.
use value_bag::{ValueBag, fill::Slot}; let value = ValueBag::from_fill(&|slot: &mut Slot| { #[derive(Debug)] struct MyShortLivedValue; slot.fill_debug(&MyShortLivedValue) }); assert_eq!("MyShortLivedValue", format!("{:?}", value));
The trait can also be implemented manually:
use value_bag::{ValueBag, Error, fill::{Slot, Fill}}; struct FillDebug; impl Fill for FillDebug { fn fill(&self, slot: &mut Slot) -> Result<(), Error> { slot.fill_debug(&42i64 as &dyn Debug) } } let value = ValueBag::from_fill(&FillDebug); assert_eq!(None, value.to_i64());
Structs
Slot | A value slot to fill using the |
Traits
Fill | A type that requires extra work to convert into a |