Skip to content
Free public beta until December 4, 2026: every course is open, no card needed. After that, the first chapter of each course stays free and full access is a one-time $39 ($19 for up to 100 founding members chosen for helpful feedback). Your progress is kept. How the beta works

smart constructor

A constructor that checks its input and refuses to build an invalid value.

A smart constructor (fn new(...) -> Result<Self, Error>) with private fields is the only way to create the type, so every value satisfies its invariants.

Examples

  • pub struct ItemCode(String); with a private field: ItemCode(String::from("banana")) outside the module fails with E0423, so callers must go through the checking constructor.

Read the full section →