Sha256: 6eed5497db91752b3aae597943c39e769f60406b37055304e69e4699f1f87b15

Contents?: true

Size: 785 Bytes

Versions: 39

Compression:

Stored size: 785 Bytes

Contents

use proc_macro2::Span;
use syn::parse::{Error, Parse, ParseStream, Result};
use syn::Token;

#[derive(Copy, Clone)]
pub struct Args {
    pub local: bool,
}

mod kw {
    syn::custom_keyword!(Send);
}

impl Parse for Args {
    fn parse(input: ParseStream) -> Result<Self> {
        match try_parse(input) {
            Ok(args) if input.is_empty() => Ok(args),
            _ => Err(error()),
        }
    }
}

fn try_parse(input: ParseStream) -> Result<Args> {
    if input.peek(Token![?]) {
        input.parse::<Token![?]>()?;
        input.parse::<kw::Send>()?;
        Ok(Args { local: true })
    } else {
        Ok(Args { local: false })
    }
}

fn error() -> Error {
    let msg = "expected #[async_trait] or #[async_trait(?Send)]";
    Error::new(Span::call_site(), msg)
}

Version data entries

39 entries across 39 versions & 1 rubygems

Version Path
wasmtime-30.0.2 ./ext/cargo-vendor/async-trait-0.1.86/src/args.rs
wasmtime-29.0.0 ./ext/cargo-vendor/async-trait-0.1.85/src/args.rs
wasmtime-28.0.0 ./ext/cargo-vendor/async-trait-0.1.85/src/args.rs
wasmtime-27.0.0 ./ext/cargo-vendor/async-trait-0.1.83/src/args.rs
wasmtime-26.0.0 ./ext/cargo-vendor/async-trait-0.1.83/src/args.rs
wasmtime-25.0.2 ./ext/cargo-vendor/async-trait-0.1.81/src/args.rs
wasmtime-25.0.1 ./ext/cargo-vendor/async-trait-0.1.81/src/args.rs
wasmtime-25.0.0 ./ext/cargo-vendor/async-trait-0.1.81/src/args.rs
wasmtime-24.0.0 ./ext/cargo-vendor/async-trait-0.1.81/src/args.rs
wasmtime-23.0.2 ./ext/cargo-vendor/async-trait-0.1.77/src/args.rs
wasmtime-22.0.0 ./ext/cargo-vendor/async-trait-0.1.77/src/args.rs
wasmtime-21.0.1 ./ext/cargo-vendor/async-trait-0.1.77/src/args.rs
wasmtime-20.0.2 ./ext/cargo-vendor/async-trait-0.1.77/src/args.rs
wasmtime-20.0.0 ./ext/cargo-vendor/async-trait-0.1.77/src/args.rs
wasmtime-18.0.3 ./ext/cargo-vendor/async-trait-0.1.77/src/args.rs
wasmtime-17.0.1 ./ext/cargo-vendor/async-trait-0.1.77/src/args.rs
wasmtime-17.0.0 ./ext/cargo-vendor/async-trait-0.1.77/src/args.rs
wasmtime-16.0.0 ./ext/cargo-vendor/async-trait-0.1.77/src/args.rs
wasmtime-15.0.1 ./ext/cargo-vendor/async-trait-0.1.77/src/args.rs
wasmtime-15.0.0 ./ext/cargo-vendor/async-trait-0.1.77/src/args.rs