/// A properties struct whose builder checks required fields at compile time.
///
/// Implemented by [`#[derive(Props)]`][derive]. The derive also generates an
/// inherent `builder()` function on the struct, so this trait only needs to be
/// in scope when the builder is constructed generically.
///
/// [derive]: derive.Props.html
/// Marks a required property as set in a generated builder.
///
/// Calling a required property's setter changes its type parameter to
/// [`Set`]. See [`#[derive(Props)]`][derive].
///
/// [derive]: derive.Props.html
;
/// Indicates that a generated builder's property has been set.
///
/// A builder's `build()` method requires this trait for every required
/// property. Unset properties produce a compile error naming the missing field.