Rust Darling proc宏属性令牌流错误

Rust Darling proc宏属性令牌流错误,rust,rust-cargo,Rust,Rust Cargo,我正在为一个结构做一个带有属性的过程宏 我需要一个类型参数,所以我使用了一个属性作为参数结束 我知道Darling可以解析该属性,但是当我解析它时,我得到了一个procmacro/procmacro2错误 鉴于此代码: extern crate proc_macro; use proc_macro2::TokenStream; use quote::quote; use syn::{self, parse_macro_input, AttributeArgs, DeriveInput}; us

我正在为一个结构做一个带有属性的过程宏

我需要一个类型参数,所以我使用了一个属性作为参数结束

我知道Darling可以解析该属性,但是当我解析它时,我得到了一个procmacro/procmacro2错误

鉴于此代码:

extern crate proc_macro;
use proc_macro2::TokenStream;
use quote::quote;
use syn::{self, parse_macro_input, AttributeArgs,  DeriveInput};
use darling::FromMeta;

#[derive(Debug, FromMeta)]
struct MacroArgs {
    toUpdateType: String,
}

#[proc_macro_attribute]
pub fn http_update(args: proc_macro::TokenStream, input: proc_macro::TokenStream) -> proc_macro::TokenStream {
    let ast = syn::parse(input).unwrap();
    let args = parse_macro_input!(args as AttributeArgs);
    let args = match MacroArgs::from_list(&args) {
        Ok(v) => v,
        Err(e) => { return e.write_errors(); } // <- Error here on write errors (see below)
    };
    impl_http_update_macro(&ast, &args)
}

/*
 * U = Implémente UpdatableModel
 * M = Implémente Model
 */
fn impl_http_update_macro(ast: &syn::DeriveInput, args: &MacroArgs) -> proc_macro::TokenStream {
    let name = &ast.ident;

    let gen = quote! {
        ...
    };
    gen.into()
}
我有一个错误:

error[E0308]: mismatched types
  --> rest_macro_derive/src/lib.rs:68:28
   |
68 |         Err(e) => { return e.write_errors(); }
   |                            ^^^^^^^^^^^^^^^^ expected struct `proc_macro::TokenStream`, found struct `proc_macro2::TokenStream`
在my Cargo.toml中,我有:

[dependencies]
syn = { version = "1.0.44", features = ["parsing"]}
quote = "1.0"
rest_macro = { version = "0.1.0", path = "../rest_macro" }
actix-web = { version="2", features=["rust-tls"] }
darling = "0.10.2"
proc-macro2 = "1.0.24"

[lib]
proc-macro = true
有一个从
proc_macro::TokenStream
proc_macro2::TokenStream
的过程。您是否尝试过使用
Err(e)=>{returne e.write_errors().into();}
[dependencies]
syn = { version = "1.0.44", features = ["parsing"]}
quote = "1.0"
rest_macro = { version = "0.1.0", path = "../rest_macro" }
actix-web = { version="2", features=["rust-tls"] }
darling = "0.10.2"
proc-macro2 = "1.0.24"

[lib]
proc-macro = true