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
🦆 recursion
🦝 distinct traits with own functions
🐠 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
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(); } ```
🦊 access the resulting tuple type of a struct easily: ```rust
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); } ```
🦥 ignore specific fields with #[igno]
🐼 ignored fields need/use Default while converting to a struct
```rust
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)
}
```
🦊 For more features, use intuple (crates.io/github)
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.