#variant #enums #automatic #field #convert #auto #derive

macro auto_from

Automatically implement std::convert::From for enum variants with single fields

3 releases (breaking)

0.3.0 Jan 22, 2019
0.2.0 Dec 12, 2018
0.1.0 Oct 29, 2018

#75 in #auto

Download history 15/week @ 2024-02-15 47/week @ 2024-02-22 7/week @ 2024-02-29 11/week @ 2024-03-07 6/week @ 2024-03-14 5/week @ 2024-03-21 33/week @ 2024-03-28 20/week @ 2024-04-04

66 downloads per month
Used in 4 crates

Apache-2.0

6KB
81 lines

auto_from

This library exports a derive macro for From. It is used to automatically generate std::convert::From implementations for enum variants containing only one field. It currently works for tuple or struct variants. Here is a small example:

use auto_from::From;

#[auto_from]
#[derive(Debug, PartialEq, From)]
enum Foo {
    Int(i32),
    Long { value: i64 },
}

fn main() {
    assert_eq!(Foo::Int(24), Foo::from(24i32));
    assert_eq!(Foo::Long{ value: 24 }, Foo::from(24i64));
}

This should be most useful when constructing error enums that require writing many From implementations, or using many .map_error(|e| MyError::Variant(e)) calls across the code. This crate just simplifies the process.


lib.rs:

This library allows you to derive the From trait for enums. It is used to automatically generate std::convert::From implementations for enum variants containing only one field. It currently works for tuple or struct variants. Here is a small example:

use auto_from::From;

#[derive(Debug, PartialEq, From)]
enum Foo {
    Int(i32),
    Long { value: i64 },
}

assert_eq!(Foo::Int(24), Foo::from(24i32));
assert_eq!(Foo::Long{ value: 24 }, Foo::from(24i64));

This should be most useful when constructing error enums that require writing many From implementations, or using many .map_error(|e| MyError::Variant(e)) calls across the code. This crate just simplifies the process.

Dependencies

~2MB
~45K SLoC