use supply::tag::AddLt;
use supply::{Lt1, Provider, RequestExt, Want};
struct Demo<'s> {
s: &'s str,
}
impl<'s> Provider for Demo<'s> {
type Lifetimes = Lt1<'s>;
fn provide<'r>(&'r self, want: &mut dyn Want<'r, Lt1<'s>>) {
want.provide_tag::<AddLt<&AddLt<str>>>(self.s);
}
}
#[test]
fn example() {
let s = String::from("hello");
let s_ref = {
let demo = Demo { s: &s };
<AddLt<&AddLt<str>>>::request(&demo)
};
assert_eq!(s_ref, Some("hello"));
}