Skip to content

Commit

Permalink
Recommend newtypes over type aliases (#2476)
Browse files Browse the repository at this point in the history
I don't know how controversial this is, but I would recommend against
using type aliases where a newtype can be used instead.

Personally, I don't like type aliases much since I feel they cause extra
indirection: I will inevitably have to go look up the alias the first
many times I encounter it. Nothing will tell me to apply the type alias
consistently, and I dislike having multiple names for the same thing.

But I'm sure some people love them, so now I'm just gently reminding
people that newtypes can be a better alternative.
  • Loading branch information
mgeisler authored Dec 3, 2024
1 parent c85816a commit 45bb2de
Showing 1 changed file with 5 additions and 1 deletion.
6 changes: 5 additions & 1 deletion src/user-defined-types/aliases.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@ type PlayerInventory = RwLock<Vec<Arc<RefCell<Item>>>>;

<details>

C programmers will recognize this as similar to a `typedef`.
- A [newtype](tuple-structs.html) is often a better alternative since it creates
a distinct type. Prefer `struct InventoryCount(usize)` to
`type InventoryCount = usize`.

- C programmers will recognize this as similar to a `typedef`.

</details>

0 comments on commit 45bb2de

Please sign in to comment.