Sha256: 31e02c3313d12c88b3b26baa49a9cb143440804b557b5255aad9a9b80b8ea1c6

Contents?: true

Size: 1.01 KB

Versions: 2

Compression:

Stored size: 1.01 KB

Contents

use proc_macro2::{Ident, TokenStream};
use quote::format_ident;

use syn;
use try;

pub fn wrap_in_const(
    serde_path: Option<&syn::Path>,
    trait_: &str,
    ty: &Ident,
    code: TokenStream,
) -> TokenStream {
    let try_replacement = try::replacement();

    let dummy_const = if cfg!(no_underscore_consts) {
        format_ident!("_IMPL_{}_FOR_{}", trait_, unraw(ty))
    } else {
        format_ident!("_")
    };

    let use_serde = match serde_path {
        Some(path) => quote! {
            use #path as _serde;
        },
        None => quote! {
            #[allow(unused_extern_crates, clippy::useless_attribute)]
            extern crate serde as _serde;
        },
    };

    quote! {
        #[doc(hidden)]
        #[allow(non_upper_case_globals, unused_attributes, unused_qualifications)]
        const #dummy_const: () = {
            #use_serde
            #try_replacement
            #code
        };
    }
}

fn unraw(ident: &Ident) -> String {
    ident.to_string().trim_start_matches("r#").to_owned()
}

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
wasmtime-8.0.0 ./ext/cargo-vendor/serde_derive-1.0.160/src/dummy.rs
wasmtime-7.0.0 ./ext/cargo-vendor/serde_derive-1.0.159/src/dummy.rs