Tuple Structs
If the field names are unimportant, you can use a tuple struct:
This is often used for single-field wrappers (called newtypes):
Speaker Notes
This slide should take about 10 minutes.
- Newtypes are a great way to encode additional information about the value in a
primitive type, for example:
- The number is measured in some units:
Newtons
in the example above. - The value passed some validation when it was created, so you no longer have
to validate it again at every use:
PhoneNumber(String)
orOddNumber(u32)
.
- The number is measured in some units:
- Demonstrate how to add a
f64
value to aNewtons
type by accessing the single field in the newtype.- Rust generally doesn’t like inexplicit things, like automatic unwrapping or for instance using booleans as integers.
- Operator overloading is discussed on Day 3 (generics).
- When a tuple struct has zero fields, the
()
can be omitted. The result is a zero-sized type (ZST), of which there is only one value (the name of the type).- This is common for types that implement some behavior but have no data
(imagine a
NullReader
that implements some reader behavior by always returning EOF).
- This is common for types that implement some behavior but have no data
(imagine a
- The example is a subtle reference to the Mars Climate Orbiter failure.