This is just braindump note to hear people’s opinions. I’ll write Pre-RFC about it soon.
Currently only way to create Rc<[T]> from Iterator<Item=T> is:
let rc: Rc<[T]> = iter.collect::<Vec<T>>().into();
But this code copies entire contents of vector to rc’s buffer, as Rc<[T]>'s heap layout is not compatible with Vec<T>.
Implementing it as title says can be a bit trickier as RcBox is not designed to be grow. Hopefully we can borrow most logic for it from RawVec.
Maybe we can name this feature as shared_from_iterator. It should also cover iterator of char/&str and Arc as well.
Reference: shared-from-slice RFC