rust/pin-init/internal/src/diagnostics.rs

Source file repositories/reference/linux-study-clean/rust/pin-init/internal/src/diagnostics.rs

File Facts

System
Linux kernel
Corpus path
rust/pin-init/internal/src/diagnostics.rs
Extension
.rs
Size
1358 bytes
Lines
45
Domain
Rust Kernel Layer
Bucket
Rust API Membrane
Inferred role
Rust Kernel Layer: implementation source
Status
source implementation candidate

Why This File Exists

Rust-side wrappers and abstractions around kernel C APIs, ownership contracts, allocation, synchronization, and module integration.

Dependency Surface

Detected Declarations

Annotated Snippet

pub(crate) fn warn(&mut self, span: impl Spanned, msg: impl Display) {
        // Have the message start on a new line for visual clarity.
        let msg = format!("\n{}", msg);
        self.0.extend(quote_spanned!(span.span() =>
            // Approximate using deprecated warning while `proc_macro_diagnostic` is unstable.
            const _: () = {
                #[deprecated = #msg]
                const fn warn() {}
                warn();
            };
        ));
    }

    pub(crate) fn with(
        fun: impl FnOnce(&mut DiagCtxt) -> Result<TokenStream, ErrorGuaranteed>,
    ) -> TokenStream {
        let mut dcx = Self(TokenStream::new());
        match fun(&mut dcx) {
            Ok(mut stream) => {
                stream.extend(dcx.0);
                stream
            }
            Err(ErrorGuaranteed(())) => dcx.0,
        }
    }
}

Annotation

Implementation Notes