Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  options.rs   Sprache: unbekannt

 
/// The goal of tracing generic parameter usage.
///
/// Not all uses of type parameters imply a need to add bounds to a generated trait impl.
/// For example, a field of type `<Vec<T> as a::b::Trait>::Associated` does not need a
/// `where T: Serialize` bound in `serde`.
/// However, a proc macro that is attempting to generate a helper struct _would_ need to
/// know about this usage, or else the generated code would reference an unknown type `T`
/// and fail to compile.
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
pub enum Purpose {
    /// The tracing is being used to generate an `impl` block.
    ///
    /// Uses such as `syn::TypePath.qself` will _not_ be returned.
    BoundImpl,
    /// The tracing is being used to generate a new struct or enum.
    ///
    /// All uses will be returned.
    Declare,
}

/// Control struct for searching type parameters.
///
/// This acts as the search context, preserving information that might have been
/// kept on a visitor in a different implementation.
/// Trait implementers are required to pass this through on any invocations they make.
///
/// # Usage
/// For extensibility, `Options` hides all of its fields from consumers.
/// To create an instance, use the `From<Purpose>` trait implementation:
///
/// ```rust
/// # use darling_core::usage::{Options, Purpose};
/// let opts: Options = Purpose::BoundImpl.into();
/// assert!(!opts.include_type_path_qself());
/// ```
#[derive(Debug, Clone)]
pub struct Options {
    purpose: Purpose,
    #[doc(hidden)]
    __nonexhaustive: (),
}

impl From<Purpose> for Options {
    fn from(purpose: Purpose) -> Self {
        Self {
            purpose,
            __nonexhaustive: (),
        }
    }
}

impl Options {
    /// Returns `true` if the implementer of `UseTypeParams` should search
    /// `<___ as ...>::...` when looking for type parameter uses.
    pub fn include_type_path_qself(&self) -> bool {
        self.purpose == Purpose::Declare
    }
}

[ Dauer der Verarbeitung: 0.1 Sekunden  (vorverarbeitet)  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge