intuple_derive 0.1.0

Convert structs into/from tuples with field ignoring + derive for intuple
Documentation

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:

[dependencies]

intuple_derive = "0.1.0"

🦀 use/import everything into rust:

use intuple_derive::*;

🦚 goes both ways:

#[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:

#[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

#[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