Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct Callback<B: Extend<String>>(pub fn(buffer: &mut B));
- fn force_only_extend<T, E: Extend<T>>(e: &mut E) -> &mut impl Extend<T> {
- e
- }
- fn foo(buffer: &mut impl Extend<String>) {
- buffer.extend(Some("foo".to_string()))
- }
- fn bar(buffer: &mut impl Extend<String>) {
- buffer.extend(Some("bar".to_string()))
- }
- fn main() {
- let cb = Callback(foo);
- let mut v = vec!["hello".to_string()];
- cb.0(force_only_extend(&mut v));
- dbg!(&v);
- let cb = Callback(bar);
- cb.0(force_only_extend(&mut v));
- dbg!(&v);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement