// @generated by jacquard-lexicon. DO NOT EDIT.
//
// This file was automatically generated from Lexicon schemas.
// Any manual changes will be overwritten on the next regeneration.

/// Marker type indicating a builder field has been set
pub struct Set<T>(pub T);
impl<T> Set<T> {
    /// Extract the inner value
    #[inline]
    pub fn into_inner(self) -> T {
        self.0
    }
}

/// Marker type indicating a builder field has not been set
pub struct Unset;
/// Trait indicating a builder field is set (has a value)

#[jacquard_common::deps::codegen::rustversion::attr(
    since(1.78.0),
    diagnostic::on_unimplemented(
        message = "the field `{Self}` was not set, but this method requires it to be set",
        label = "the field `{Self}` was not set"
    )
)]
pub trait IsSet: private::Sealed {}
/// Trait indicating a builder field is unset (no value yet)

#[jacquard_common::deps::codegen::rustversion::attr(
    since(1.78.0),
    diagnostic::on_unimplemented(
        message = "the field `{Self}` was already set, but this method requires it to be unset",
        label = "the field `{Self}` was already set"
    )
)]
pub trait IsUnset: private::Sealed {}
impl<T> IsSet for Set<T> {}
impl IsUnset for Unset {}
mod private {
    /// Sealed trait to prevent external implementations
    pub trait Sealed {}
    impl<T> Sealed for super::Set<T> {}
    impl Sealed for super::Unset {}
}