Because all references in Rust are typed with &
, it's not obvious which of them are fat and which are thin. So the symbol &
by itself doesn't tell you the stack representation of an arbitrary reference type. For example, it's not clear that &str
is fat but &String
is thin until one learns how they are actually implemented.
My question is do we have an exhaustive list of all fat references/pointers so that we can safely regard all those not on the list as thin? (All custom DSTs shall be counted as one category in the above mentioned exhaustive list.)
Edit. Differences from that linked question: Here the answer shall be definitive and able to assert whether &T
is fat or thin for any type T
, in finite steps.
(We do not consider mutability in this question.)
(Closed not because of a dup but answered in chat.)