Expand description
A vesta, otherwise known as a match case, is a small container for matches, named after the Roman goddess of the hearth.
Vesta is a crate for extensibly matching cases in Rust.
By implementing Match
and Case
for some type (or better yet, correctly
deriving them using the Match
derive macro), you can pattern-match on that type
using the case!
macro almost like using the match
keyword built into Rust.
However, Vesta’s case!
macro is more general than match
, because Match
and Case
are traits! This means you can enable pattern-matching for types which are not literally
implemented as enum
s, and you can write code which is generic over any type that is
pattern-matchable.
Macros§
Enums§
- Exhaustive
- A marker type indicating that the
tag
for some type will always be strictly less thanN
. - Nonexhaustive
- A marker type indicating that the
tag
for some type is not fixed to some known upper bound.
Traits§
- Case
- An implementation of
Case
defines a particular case of a pattern match for a type.
ℹ️ Prefer using the methods ofCaseExt
to directly calling these methods. - CaseExt
- An extension trait providing methods analogous to those in
Case
, but which takeself
and type parameters.
💡 Prefer using these to directly calling the methods inCase
. - Match
- A type which is
Match
can be pattern-matched using thecase!
macro and the methods ofCaseExt
/Case
.
Functions§
- assert_
exhaustive - Statically assert that the type of the given value is exhaustive for
N
.