🐠 add intuple to the dependencies in the Cargo.toml
:
toml
[dependencies]
intuple = "0.1.0"
🦀 use/import everything into rust:
rust
use intuple::*;
🦚 multiple possibilities to convert - combine as you wish - whatever fits your use case:
```rust
struct Struct {a:u32, b:u32, c:u32}
fn main(){ // use std traits 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(); // OR intuple traits let strct: Struct = (3,2,1).intostruct(); let tuple = StructIntuple::fromstruct(strct); // OR let strct = Struct::fromtuple((3,2,1)); let tuple = strct.intotuple(); } ```
🦊 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 ALWAYS equal to
let tup:
🦥 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)
}
```
🦊 convert recursively with #[recursive]
or #[rcsv]
🐼 recursive fields need to derive Intuple
```rust
struct Struct {a:u32, b:u32, c:u32}
struct Recursive {a:u32, #[recursive] b:Struct, c:u32} fn main(){ let rcsv: Recursive = (9,(3,2,1),8).into(); // => Recursive{a:9, b:Struct{a:3,b:2,c:1}, c:8} let tuple: RecursiveIntuple = rcsv.into(); // => (9,(3,2,1),8) } ```
🦎 Changelog
🐱 GitHub
👾 Discord Server
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.