knative-derive 0.1.0

Create custom types that adhere to knative specifications.
Documentation
use knative_derive::ConditionType;
use knative_conditions::ConditionType as _;
use knative_conditions::{ConditionAccessor, Conditions};

#[derive(ConditionType, Copy, Clone, Debug, PartialEq)]
enum MyCondition {
    Ready,
    #[dependent]
    SinkProvided
}

struct MyStatus {
    conditions: Conditions<MyCondition>
}

impl ConditionAccessor<MyCondition> for MyStatus {
    fn conditions(&mut self) -> &mut Conditions<MyCondition> {
        &mut self.conditions
    }
}

#[test]
fn variant_functions_exist() {
    assert_eq!(MyCondition::Ready, MyCondition::happy());
    assert_eq!(MyCondition::SinkProvided, MyCondition::sinkprovided());
}

#[test]
fn has_dependents() {
    assert_eq!([MyCondition::SinkProvided], MyCondition::dependents());
}

#[test]
fn can_be_managed() {
    let mut status = MyStatus { conditions: Conditions::default() };
    status.mark_sinkprovided();
}