type-state-builder 0.5.1

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

#[derive(TypeStateBuilder)]
struct Example<'a, T: Debug> {
    #[builder(required)]
    name: String,

    #[builder(required)]
    data: &'a T,

    optional_field: Option<String>,
}

#[test]
fn test_example_with_lifetime_and_bounds() {
    let value = 42i32;
    let instance = Example::<i32>::builder()
        .name("test".to_string())
        .data(&value)
        .build();

    assert_eq!(instance.name, "test");
    assert_eq!(instance.data, &42);
    assert_eq!(instance.optional_field, None);
}