macro_rules! impl_into {
    (<$($generic:ident),+> in $this:ty => $inner:ty : $field:ident) => { ... };
    (<$($generic:ident),+> in $this:ty => $inner:ty) => { ... };
    ($this:ty => $inner:ty) => { ... };
    ($this:ty => $inner:ty : $field:ident) => { ... };
}
Expand description

Implement Into for a struct.

Examples

With a newtype struct:

use impl_more::impl_into;

struct Foo(String);

impl_into!(Foo => String);

let foo = Foo("bar".to_owned());
let foo_str: String = foo.into();

With a named field struct with type parameters:

use std::rc::Rc;
use impl_more::impl_into;

struct Foo<T> { inner: Rc<T> }
impl_into!(<T> in Foo<T> => Rc<T> : inner);

let foo = Foo { inner: Rc::new("bar".to_owned()) };
let _: Rc<String> = foo.into();