Expand description
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: 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: Slot) -> Result<(), Error> {
slot.fill_debug(&42i64 as &dyn Debug)
}
}
let value = ValueBag::from_fill(&FillDebug);
assert_eq!(None, value.to_i64());
Structs
- A value slot to fill using the
Fill
trait.
Traits
- A type that requires extra work to convert into a
ValueBag
.