Topic: Chalk Integration
Audience
compiler team, centril + others from lang team?
Key People
nikomatsakis, scalexm
When
Tuesday, 11:00-13:00
Where
Gainsboro
Meeting Style
Discussion
Deliverables

Homework to do before meeting
Agenda
  • (15-30min) identify current needs from the trait system:
  • generic associated types

trait Foo
  type Bar<T>
}

trait Iterator {
  type Item;
  fn next<'a>(&'a mut self) -> Option<Self::Item>;
}

// "Streaming iterator"
trait StreamingIterator {
  type Item<'a>;
  fn next<'a>(&'a mut self) -> Option<Self::Item<'a>>;
}

// "Owning ref"
struct OwnedRef<T> // today 
    // Deref: &'a self -> &'a T
    // works for things like T = String
    // but not for a type that has a lifetime

// async fn
trait Foo {
  type BlahFuture<..>
  fn blah(&self) -> Self::BlahFuture<..>
}

trait AsyncFnMut {
  type Output<'a>: Future;
  fn call_mut<'a>(&'a mut self) -> Self::Output<'a>
}

// Consider a shortcut? Maybe, but maybe not worth it