Advertisement
Guest User

Untitled

a guest
Aug 24th, 2019
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.52 KB | None | 0 0
  1. struct Callback<B: Extend<String>>(pub fn(buffer: &mut B));
  2.  
  3. fn force_only_extend<T, E: Extend<T>>(e: &mut E) -> &mut impl Extend<T> {
  4. e
  5. }
  6.  
  7. fn foo(buffer: &mut impl Extend<String>) {
  8. buffer.extend(Some("foo".to_string()))
  9. }
  10.  
  11. fn bar(buffer: &mut impl Extend<String>) {
  12. buffer.extend(Some("bar".to_string()))
  13. }
  14.  
  15. fn main() {
  16. let cb = Callback(foo);
  17. let mut v = vec!["hello".to_string()];
  18. cb.0(force_only_extend(&mut v));
  19. dbg!(&v);
  20. let cb = Callback(bar);
  21. cb.0(force_only_extend(&mut v));
  22. dbg!(&v);
  23. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement