• SorteKanin@feddit.dk
    link
    fedilink
    arrow-up
    10
    ·
    5 months ago

    Nice sheet, though I have a few critiques:

    1. Why does it say where T: Sized for references &T? A reference can definitely point to an unsized type, e.g. &str.
    2. 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.
    • jameseb@lemm.ee
      link
      fedilink
      English
      arrow-up
      6
      ·
      edit-2
      5 months ago
      1. 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]>

    • Sosthène Guédon
      link
      fedilink
      arrow-up
      4
      ·
      5 months ago

      Because when T is !Sized, the layout is different, it looks more like the layout of &[T].