Skip to content

tak9-n/clone_into_derive

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

clone_into_derive

This crates generate clone macro for structs by the derive macro CloneInto. It's quite convenient if you want to copy a struct to another struct which includes the struct fully, or initialize another struct with the struct.

The derive macro CloneInto generates the macro which clone all of public fields in the struct. The macro name derive from the struct's name. For example, the macro name becomes aaa_bbb_clone_into! if the struct name is AaaBbb.

    #[derive(CloneInto)]
    pub struct AaaBbb {
        pub a: i32,
        pub b: i32,
    }

This code generate aaa_bbb_clone_into! macro. And the aaa_bbb_clone_into!(aaabbb, ccc) is expanded like below.

    ccc.a = aaabbb.a.clone();
    ccc.b = aaabbb.b.clone();

aaa_bbb_ccc_clone!(aaabbb,Ccc{c: 4}) is expanded like below.

    Ccc {
      a: aaabbb.a.clone(),
      b: aaabbb.b.clone(),
      c: 4
    }

You can specify struct name at a place of Ccc. But there is one limit. Now, you can't specify the struct name with path, so you have to specfy just only the struct name. It looks like macro_rules's bug. When I used ty disanator, The macro expansion result became an error.

The example is in tests directory.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages