Found this on Mastodon https://fosstodon.org/@dpom/112681955888465502 , and it is a very nice overview of the containers and their layout.
You must log in or register to comment.
Nice sheet, though I have a few critiques:
- Why does it say
where T: Sized
for references&T
? A reference can definitely point to an unsized type, e.g.&str
. - The yellow boxes really mean “must be heap allocated” - all the other references (
&T
,&[T]
and&dyn Trait
) may either point to the stack or the heap.
- Why does it say
where T: Sized
for references&T
? A reference can definitely point to an unsized type, e.g.&str
.
I think the point being made is that the layout shown only applies for
Sized
T
. Layouts for&[T]
and&dyn Trait
are shown elsewhere on the sheet.&str
is noted under&[T]
.Edit: although, similar considerations would apply to other pointer types, but that isn’t noted on the sheet except for
Box<[T]>
- Why does it say
Because when
T
is!Sized
, the layout is different, it looks more like the layout of&[T]
.
- Why does it say
This is outdatded. Mutexes don’t allocate anymore. That’s how
Mutex::new
can be const.