try-from-discrim

Crates.iotry-from-discrim
lib.rstry-from-discrim
version1.0.0
sourcesrc
created_at2022-09-29 19:26:05.908554
updated_at2022-09-29 19:26:05.908554
description#[derive(TryFrom / From)] using enum discriminants, with fallback support.
homepage
repositoryhttps://github.com/ISSOtm/try-from-discrim
max_upload_size
id676875
size38,203
Eldred Habert (ISSOtm)

documentation

README

derive(TryFrom, From)

This library provides convenient derive macros for the standard library's std::convert::TryFrom and std::convert::From traits.

Example

[dependencies]
try-from-discrim = "1.0"

and then:

#[macro_use] extern crate try_from_discrim;

#[derive(TryFrom)]
#[from(u8)]
enum RegisterIndex {
	B = 0,
	C = 1,
	D = 2,
	E = 3,
	H = 4,
	L = 5,
	HlInd = 6,
	A = 7,
}

(You do not need the extern crate line with Rust 2018 or later.)

The discriminants can be omitted, too! Check the documentation for more information.

Details

  • This crate intentionally stays out of your public API. The provided implementations are identical to as if you had written them by hand, thus switching from handwritten impls to this crate or vice-versa is not a breaking change.
  • Using the standard library conversion traits enables working with more code than deriving a custom trait instead.
  • Non-exhaustive enums can still implement From using a fallback variant.

The generated implementations are compatible with a #[no_std] environment.

License

This crate is licensed under the Mozilla Public License 2.0, see the LICENSE file.

Commit count: 0

cargo fmt