visit-rs 0.1.7

A generic visitor pattern library for Rust
Documentation
use visit_rs::*;

#[derive(VisitFields)]
struct NamedStruct {
    field1: String,
    field2: i32,
    field3: bool,
}

#[derive(VisitFields)]
struct TupleStruct(String, i32, bool);

fn main() {
    println!("NamedStruct:");
    println!("  NAME: {}", NamedStruct::NAME);
    println!("  NAMED_FIELDS: {}", NamedStruct::NAMED_FIELDS);
    println!("  FIELD_COUNT: {}", NamedStruct::FIELD_COUNT);

    println!("\nTupleStruct:");
    println!("  NAME: {}", TupleStruct::NAME);
    println!("  NAMED_FIELDS: {}", TupleStruct::NAMED_FIELDS);
    println!("  FIELD_COUNT: {}", TupleStruct::FIELD_COUNT);

    assert_eq!(NamedStruct::NAME, "NamedStruct");
    assert!(NamedStruct::NAMED_FIELDS);
    assert_eq!(NamedStruct::FIELD_COUNT, 3);

    assert_eq!(TupleStruct::NAME, "TupleStruct");
    assert!(!TupleStruct::NAMED_FIELDS);
    assert_eq!(TupleStruct::FIELD_COUNT, 3);

    println!("\nStructInfo trait works correctly!");
}