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;

trait SimpleTrait {}

struct SimpleImpl;
impl SimpleTrait for SimpleImpl {}

#[derive(TypeStateBuilder)]
struct WithWhere<T>
where
    T: SimpleTrait,
{
    #[builder(required)]
    value: String,

    #[builder(skip_setter, default = std::marker::PhantomData)]
    _phantom: std::marker::PhantomData<T>,
}

#[test]
fn test_where_clause() {
    let instance = WithWhere::<SimpleImpl>::builder()
        .value("test".to_string())
        .build();

    assert_eq!(instance.value, "test");
}