intuple derive

Easy conversion between structs and tuples

Mainly developed as derive macro for intuple, but can also be used as standalone library with less features.

IntupleLite derive features:

🐍 convert structs into/from tuples - via std From<_> and Into<_>
🦥 ignore specific fields - via #[igno]
🦊 easy access to the resulting tuple type of the struct

See intuple (crates.io/github) if you also need:

🦆 recursion
🦝 distinct traits with own functions

Standalone Usage

🐠 add intuple_derive to the dependencies in the Cargo.toml: toml [dependencies] intuple_derive = "0.1.0" 🦀 use/import everything into rust: rust use intuple_derive::*; 🦚 goes both ways: ```rust

[derive(IntupleLite)]

struct Struct {a:u32, b:u32, c:u32}

fn main(){ let strct: Struct = (3,2,1).into(); let tuple = <(u32, u32, u32)>::from(strct); // OR let strct = Struct::from((3,2,1)); let tuple: (u32, u32, u32) = strct.into(); } ```

Tuple Type

🦊 access the resulting tuple type of a struct easily: ```rust

[derive(IntupleLite)]

struct Nice {a:u32, b:u32, c:u32} fn main(){ // easiest: through {StructName}Intuple let tup: NiceIntuple = (3,2,1); // is equal to let tup: (u32, u32, u32) = (3,2,1); } ```

Ignoring

🦥 ignore specific fields with #[igno]
🐼 ignored fields need/use Default while converting to a struct ```rust

[derive(IntupleLite)]

struct Struct {a:u32, #[igno] b:u32, c:u32} fn main(){ let strct = Struct::from((2,1));
// => {a:2, b:0, c:1}
let tuple: (u32, u32) = strct.into(); // => (2, 1) } ```

More Features

🦊 For more features, use intuple (crates.io/github)


License

Licensed under either of Apache License, Version 2.0 or MIT license at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.