type-state-builder 0.5.1

Type-state builder pattern derive macro with compile-time safety and enhanced ergonomics.
Documentation
use type_state_builder::TypeStateBuilder;

#[derive(TypeStateBuilder)]
struct Container<T: Clone>
where
    T: Send,
{
    #[builder(required)]
    value: T,

    #[builder(required)]
    name: String,

    tags: Vec<String>,
}

fn main() {
    let container = Container::builder()
        .value(42)
        .name("test".to_string())
        .tags(vec!["tag1".to_string()])
        .build();

    println!(
        "Container '{}' has value: {}",
        container.name, container.value
    );
    println!("Tags: {:?}", container.tags);
}