fzyzcjy / flutter_rust_bridge

Flutter/Dart <-> Rust binding generator, feature-rich, but seamless and simple.

Home Page:https://fzyzcjy.github.io/flutter_rust_bridge/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

When a struct is never used in any functions, it is silently ignored, causing confusion for the users

Xiaobaishushu25 opened this issue · comments

Describe the bug

i change the rust code but cant generate right dart code.
i edit /rust/src/api/simple.rs

#[flutter_rust_bridge::frb(sync)] // Synchronous mode for simplicity of the demo
pub fn greet(name: String) -> String {
    format!("Hello, {name}!")
}

#[flutter_rust_bridge::frb(init)]
pub fn init_app() {
    // Default utilities - feel free to customize
    flutter_rust_bridge::setup_default_user_utils();
}
pub fn hello(name: String) -> String {
    format!("Hello, {name}!")
}
pub enum Test {
    Empty,
    Primitives {
        /// Dart field comment
        int32: i32,
        float64: f64,
        boolean: bool,
    },
    Nested(Box<KitchenSink>),
    Optional(
        /// Comment on anonymous field
        Option<i32>,
        Option<i32>,
    ),
    Buffer(ZeroCopyBuffer<Vec<u8>>),
    Enums(Weekdays),
}
strct User{
age:i32
}

and i add meaage.rs in /rust/src/api folder:

use serde::{Deserialize, Serialize};
use std::net::SocketAddr;
#[derive(Debug,Clone,PartialEq,Serialize,Deserialize)]
pub struct DeviceInfo {
    socket_addr:SocketAddr, //这个地址用于在判断是否断开请求的是不是自己stream请求断开的不是本机的是
    device_name:String,
    device_type:DeviceType,
    // pair_code:Option<String>
}
#[derive(Debug,Clone,PartialEq,Serialize,Deserialize)]
pub enum DeviceType{
    DeskTop,
    Phone
}
impl DeviceInfo {
    pub(crate) fn new(socket_addr: SocketAddr, device_name:String) -> Self{
        Self{
            socket_addr,
            device_name,
            device_type:DeviceType::DeskTop
        }
    }
}
#[derive(Debug,Clone, Serialize, Deserialize)]
pub enum Message {
    PairRequestMessage(String,DeviceInfo),
    PairCreateMessage(DeviceInfo),
    PairDeviceInfosResponseMessage(Vec<DeviceInfo>),
    PairCodeResponseMessage(String),
    ClipboardMessage(String),
    ServerReadyResponseMessage(),
    NoPairDeviceResponseMessage(),
    RemovePairRequestMessage(SocketAddr),
    RemovePairResponseMessage(),
    WorkErrorMessage()
}
impl Message {
    pub fn encode(self) -> Vec<u8> {
        let mut bytes = Vec::with_capacity(256);
        let content = serde_json::to_vec(&self).unwrap();
        bytes.push(content.len() as u8); 
        bytes.extend(content); 
        bytes
    }

    pub fn decode(bytes: Vec<u8>) -> Message {
        let content = &bytes[1..];
        let message = serde_json::from_slice::<Message>(content)?;
        message
    }
}

i also edit the mod.rs:

pub mod simple;
pub mod message;

I will post the generated DART code below.

Steps to reproduce

  1. edit the rust code
  2. execute ' flutter_rust_bridge_codegen generate'
  3. the generated Dart code is incomplete

Logs

I removed the expanded part of the macro because there were too many. If there is important information, I can add it again
[2024-02-10T14:00:04.727Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\reader.rs:22] read_rust_file rust_file_path="\\\\?\\E:\\Workspace\\AndroidCode\\my_rust_app\\rust\\src\\api\\simple.rs" module=Some("api::simple")
[2024-02-10T14:00:04.745Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\source_graph\crates.rs:26] parse manifest_path="\\\\?\\E:\\Workspace\\AndroidCode\\my_rust_app\\rust\\Cargo.toml"
[2024-02-10T14:00:05.053Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\source_graph\module_parser.rs:31] parse START info=ModuleInfo { visibility: Public, file_path: "\\\\?\\E:\\Workspace\\AndroidCode\\my_rust_app\\rust\\src\\lib.rs", module_path: ["crate"] }    
[2024-02-10T14:00:05.054Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\source_graph\module_parser.rs:150] parse_syn_item_mod module_path=["crate", "api"]                                                                                                              
[2024-02-10T14:00:05.054Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\source_graph\module_parser.rs:202] parse_syn_item_mod_contentless module_path=["crate", "api"]                                                                                                  
[2024-02-10T14:00:05.055Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\source_graph\module_parser.rs:205] file_path_candidates "api" "\\\\?\\E:\\Workspace\\AndroidCode\\my_rust_app\\rust\\src\\lib.rs" ["\\\\?\\E:\\Workspace\\AndroidCode\\my_rust_app\\rust\\src\\a
pi.rs", "\\\\?\\E:\\Workspace\\AndroidCode\\my_rust_app\\rust\\src\\api\\mod.rs", "\\\\?\\E:\\Workspace\\AndroidCode\\my_rust_app\\rust\\src\\lib\\api.rs", "\\\\?\\E:\\Workspace\\AndroidCode\\my_rust_app\\rust\\src\\lib\\api\\mod.rs"]
[2024-02-10T14:00:05.056Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\reader.rs:22] read_rust_file rust_file_path="\\\\?\\E:\\Workspace\\AndroidCode\\my_rust_app\\rust\\src\\api\\mod.rs" module=Some("api")                                                         
[2024-02-10T14:00:05.056Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\source_graph\module_parser.rs:216] Trying to parse "\\\\?\\E:\\Workspace\\AndroidCode\\my_rust_app\\rust\\src\\api\\mod.rs"                                                                     
[2024-02-10T14:00:05.072Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\source_graph\module_parser.rs:31] parse START info=ModuleInfo { visibility: Public, file_path: "\\\\?\\E:\\Workspace\\AndroidCode\\my_rust_app\\rust\\src\\api\\mod.rs", module_path: ["crate", "api"] }
[2024-02-10T14:00:05.074Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\source_graph\module_parser.rs:150] parse_syn_item_mod module_path=["crate", "api", "simple"]                                                                                                    
[2024-02-10T14:00:05.074Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\source_graph\module_parser.rs:180] parse_syn_item_mod_contentful module_path=["crate", "api", "simple"]                                                                                         
[2024-02-10T14:00:05.075Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\source_graph\module_parser.rs:31] parse START info=ModuleInfo { visibility: Public, file_path: "\\\\?\\E:\\Workspace\\AndroidCode\\my_rust_app\\rust\\src\\api\\mod.rs", module_path: ["crate", "api", "simple"] }
[2024-02-10T14:00:05.075Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\source_graph\module_parser.rs:101] parse_syn_item_struct_or_enum item_ident=Ident { sym: Test, span: bytes(59159..59163) }                                                                      
[2024-02-10T14:00:05.076Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\source_graph\module_parser.rs:77] parse END info=ModuleInfo { visibility: Public, file_path: "\\\\?\\E:\\Workspace\\AndroidCode\\my_rust_app\\rust\\src\\api\\mod.rs", module_path: ["crate", "api", "simple"] }
[2024-02-10T14:00:05.076Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\source_graph\module_parser.rs:150] parse_syn_item_mod module_path=["crate", "api", "message"]                                                                                                   
[2024-02-10T14:00:05.077Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\source_graph\module_parser.rs:180] parse_syn_item_mod_contentful module_path=["crate", "api", "message"]                                                                                        
[2024-02-10T14:00:05.079Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\source_graph\module_parser.rs:31] parse START info=ModuleInfo { visibility: Public, file_path: "\\\\?\\E:\\Workspace\\AndroidCode\\my_rust_app\\rust\\src\\api\\mod.rs", module_path: ["crate", "api", "message"] }
[2024-02-10T14:00:05.080Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\source_graph\module_parser.rs:101] parse_syn_item_struct_or_enum item_ident=Ident { sym: DeviceInfo, span: bytes(59713..59723) }                                                                
[2024-02-10T14:00:05.081Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\source_graph\module_parser.rs:101] parse_syn_item_struct_or_enum item_ident=Ident { sym: DeviceType, span: bytes(75090..75100) }                                                                
[2024-02-10T14:00:05.081Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\source_graph\module_parser.rs:101] parse_syn_item_struct_or_enum item_ident=Ident { sym: Message, span: bytes(84381..84388) }                                                                   
[2024-02-10T14:00:05.083Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\source_graph\module_parser.rs:77] parse END info=ModuleInfo { visibility: Public, file_path: "\\\\?\\E:\\Workspace\\AndroidCode\\my_rust_app\\rust\\src\\api\\mod.rs", module_path: ["crate", "api", "message"] }
[2024-02-10T14:00:05.086Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\source_graph\module_parser.rs:77] parse END info=ModuleInfo { visibility: Public, file_path: "\\\\?\\E:\\Workspace\\AndroidCode\\my_rust_app\\rust\\src\\api\\mod.rs", module_path: ["crate", "api"] }
[2024-02-10T14:00:05.088Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\source_graph\module_parser.rs:150] parse_syn_item_mod module_path=["crate", "frb_generated"]                                                                                                    
[2024-02-10T14:00:05.089Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\source_graph\module_parser.rs:202] parse_syn_item_mod_contentless module_path=["crate", "frb_generated"]                                                                                        
[2024-02-10T14:00:05.090Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\source_graph\module_parser.rs:205] file_path_candidates "frb_generated" "\\\\?\\E:\\Workspace\\AndroidCode\\my_rust_app\\rust\\src\\lib.rs" ["\\\\?\\E:\\Workspace\\AndroidCode\\my_rust_app\\ru
st\\src\\frb_generated.rs", "\\\\?\\E:\\Workspace\\AndroidCode\\my_rust_app\\rust\\src\\frb_generated\\mod.rs", "\\\\?\\E:\\Workspace\\AndroidCode\\my_rust_app\\rust\\src\\lib\\frb_generated.rs", "\\\\?\\E:\\Workspace\\AndroidCode\\my_rust_app\\rust\\src\\lib\\frb_generated\\mod.rs"]
[2024-02-10T14:00:05.096Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\reader.rs:22] read_rust_file rust_file_path="\\\\?\\E:\\Workspace\\AndroidCode\\my_rust_app\\rust\\src\\frb_generated.rs" module=Some("frb_generated")                                          
[2024-02-10T14:00:05.097Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\source_graph\module_parser.rs:216] Trying to parse "\\\\?\\E:\\Workspace\\AndroidCode\\my_rust_app\\rust\\src\\frb_generated.rs"                                                                
[2024-02-10T14:00:05.103Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\source_graph\module_parser.rs:31] parse START info=ModuleInfo { visibility: Inherited, file_path: "\\\\?\\E:\\Workspace\\AndroidCode\\my_rust_app\\rust\\src\\frb_generated.rs", module_path: ["crate", "frb_generated"] }
[2024-02-10T14:00:05.104Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\source_graph\module_parser.rs:101] parse_syn_item_struct_or_enum item_ident=Ident { sym: MoiArc, span: bytes(117668..117674) }                                                                  
[2024-02-10T14:00:05.105Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\source_graph\module_parser.rs:124] parse_syn_item_struct_or_enum item_type=ItemType { attrs: [], vis: Visibility::Inherited, type_token: Type, ident: Ident { sym: ObjectId, span: bytes(121494.
.121502) }, generics: Generics { lt_token: None, params: [], gt_token: None, where_clause: None }, eq_token: Eq, ty: Type::Path { qself: None, path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { sym: usize, span: bytes(121505..121510) }, arguments: PathArguments::None }] } }, semi_token: Semi }
[2024-02-10T14:00:05.106Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\source_graph\module_parser.rs:124] parse_syn_item_struct_or_enum item_type=ItemType { attrs: [], vis: Visibility::Public(Pub), type_token: Type, ident: Ident { sym: MoiArcPool, span: bytes(121
525..121535) }, generics: Generics { lt_token: Some(Lt), params: [GenericParam::Type(TypeParam { attrs: [], ident: Ident { sym: T, span: bytes(121536..121537) }, colon_token: None, b
ounds: [], eq_token: None, default: None })], gt_token: Some(Gt), where_clause: None }, eq_token: Eq, ty: Type::Path { qself: None, path: Path { leading_colon: None, segments: [PathS
egment { ident: Ident { sym: std, span: bytes(121541..121544) }, arguments: PathArguments::None }, PathSep, PathSegment { ident: Ident { sym: sync, span: bytes(121546..121550) }, arg
uments: PathArguments::None }, PathSep, PathSegment { ident: Ident { sym: RwLock, span: bytes(121552..121558) }, arguments: PathArguments::AngleBracketed { colon2_token: None, lt_tok
en: Lt, args: [GenericArgument::Type(Type::Path { qself: None, path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { sym: MoiArcPoolInner, span: bytes(121559..121
574) }, arguments: PathArguments::AngleBracketed { colon2_token: None, lt_token: Lt, args: [GenericArgument::Type(Type::Path { qself: None, path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { sym: T, span: bytes(121575..121576) }, arguments: PathArguments::None }] } })], gt_token: Gt } }] } })], gt_token: Gt } }] } }, semi_token: Semi }    
[2024-02-10T14:00:05.107Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\source_graph\module_parser.rs:101] parse_syn_item_struct_or_enum item_ident=Ident { sym: MoiArcPoolInner, span: bytes(121595..121610) }                                                         
[2024-02-10T14:00:05.107Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\source_graph\module_parser.rs:101] parse_syn_item_struct_or_enum item_ident=Ident { sym: IdGenerator, span: bytes(121903..121914) }                                                             
[2024-02-10T14:00:05.108Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\source_graph\module_parser.rs:101] parse_syn_item_struct_or_enum item_ident=Ident { sym: MoiArcPoolValue, span: bytes(122487..122502) }                                                         
[2024-02-10T14:00:05.109Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\source_graph\module_parser.rs:124] parse_syn_item_struct_or_enum item_type=ItemType { attrs: [], vis: Visibility::Public(Pub), type_token: Type, ident: Ident { sym: RustOpaqueMoi, span: bytes(
122891..122904) }, generics: Generics { lt_token: Some(Lt), params: [GenericParam::Type(TypeParam { attrs: [], ident: Ident { sym: T, span: bytes(122905..122906) }, colon_token: None
, bounds: [], eq_token: None, default: None })], gt_token: Some(Gt), where_clause: None }, eq_token: Eq, ty: Type::Path { qself: None, path: Path { leading_colon: Some(PathSep), segm
ents: [PathSegment { ident: Ident { sym: flutter_rust_bridge, span: bytes(122920..122939) }, arguments: PathArguments::None }, PathSep, PathSegment { ident: Ident { sym: for_generate
d, span: bytes(122941..122954) }, arguments: PathArguments::None }, PathSep, PathSegment { ident: Ident { sym: RustOpaqueBase, span: bytes(122956..122970) }, arguments: PathArguments
::AngleBracketed { colon2_token: None, lt_token: Lt, args: [GenericArgument::Type(Type::Path { qself: None, path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { 
sym: T, span: bytes(122971..122972) }, arguments: PathArguments::None }] } }), Comma, GenericArgument::Type(Type::Path { qself: None, path: Path { leading_colon: None, segments: [Pat
hSegment { ident: Ident { sym: MoiArc, span: bytes(122974..122980) }, arguments: PathArguments::AngleBracketed { colon2_token: None, lt_token: Lt, args: [GenericArgument::Type(Type::
Path { qself: None, path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { sym: T, span: bytes(122981..122982) }, arguments: PathArguments::None }] } })], gt_token: Gt } }] } })], gt_token: Gt } }] } }, semi_token: Semi }
[2024-02-10T14:00:05.109Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\source_graph\module_parser.rs:124] parse_syn_item_struct_or_enum item_type=ItemType { attrs: [Attribute { pound_token: Pound, style: AttrStyle::Outer, bracket_token: Bracket, meta: Meta::NameV
alue { path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { sym: doc, span: bytes(122990..123102) }, arguments: PathArguments::None }] }, eq_token: Eq, value: Ex
pr::Lit { attrs: [], lit: Lit::Str { token: " A wrapper to support [arbitrary Rust types](https://cjycode.com/flutter_rust_bridge/guides/types/arbitrary)." } } } }, Attribute { pound
_token: Pound, style: AttrStyle::Outer, bracket_token: Bracket, meta: Meta::NameValue { path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { sym: doc, span: byte
s(123107..123110) }, arguments: PathArguments::None }] }, eq_token: Eq, value: Expr::Lit { attrs: [], lit: Lit::Str { token: "" } } } }, Attribute { pound_token: Pound, style: AttrSt
yle::Outer, bracket_token: Bracket, meta: Meta::NameValue { path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { sym: doc, span: bytes(123115..123143) }, argumen
ts: PathArguments::None }] }, eq_token: Eq, value: Expr::Lit { attrs: [], lit: Lit::Str { token: " ## Naming the inner type" } } } }, Attribute { pound_token: Pound, style: AttrStyle
::Outer, bracket_token: Bracket, meta: Meta::NameValue { path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { sym: doc, span: bytes(123148..123151) }, arguments:
 PathArguments::None }] }, eq_token: Eq, value: Expr::Lit { attrs: [], lit: Lit::Str { token: "" } } } }, Attribute { pound_token: Pound, style: AttrStyle::Outer, bracket_token: Brac
ket, meta: Meta::NameValue { path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { sym: doc, span: bytes(123156..123227) }, arguments: PathArguments::None }] }, e
q_token: Eq, value: Expr::Lit { attrs: [], lit: Lit::Str { token: " When an `RustOpaque<T>` is transformed into a Dart type, T's string" } } } }, Attribute { pound_token: Pound, styl
e: AttrStyle::Outer, bracket_token: Bracket, meta: Meta::NameValue { path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { sym: doc, span: bytes(123232..123310) }
, arguments: PathArguments::None }] }, eq_token: Eq, value: Expr::Lit { attrs: [], lit: Lit::Str { token: " representation undergoes some transformations to become a valid Dart type:
" } } } }, Attribute { pound_token: Pound, style: AttrStyle::Outer, bracket_token: Bracket, meta: Meta::NameValue { path: Path { leading_colon: None, segments: [PathSegment { ident: 
Ident { sym: doc, span: bytes(123315..123382) }, arguments: PathArguments::None }] }, eq_token: Eq, value: Expr::Lit { attrs: [], lit: Lit::Str { token: " - Rust keywords (dyn, 'stat
ic, etc.) are automatically removed." } } } }, Attribute { pound_token: Pound, style: AttrStyle::Outer, bracket_token: Bracket, meta: Meta::NameValue { path: Path { leading_colon: No
ne, segments: [PathSegment { ident: Ident { sym: doc, span: bytes(123387..123456) }, arguments: PathArguments::None }] }, eq_token: Eq, value: Expr::Lit { attrs: [], lit: Lit::Str { 
token: " - ASCII alphanumerics are kept, all other characters are ignored." } } } }, Attribute { pound_token: Pound, style: AttrStyle::Outer, bracket_token: Bracket, meta: Meta::Name
Value { path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { sym: doc, span: bytes(123461..123464) }, arguments: PathArguments::None }] }, eq_token: Eq, value: E
xpr::Lit { attrs: [], lit: Lit::Str { token: "" } } } }, Attribute { pound_token: Pound, style: AttrStyle::Outer, bracket_token: Bracket, meta: Meta::NameValue { path: Path { leading
_colon: None, segments: [PathSegment { ident: Ident { sym: doc, span: bytes(123469..123489) }, arguments: PathArguments::None }] }, eq_token: Eq, value: Expr::Lit { attrs: [], lit: L
it::Str { token: " ## Trait objects" } } } }, Attribute { pound_token: Pound, style: AttrStyle::Outer, bracket_token: Bracket, meta: Meta::NameValue { path: Path { leading_colon: Non
e, segments: [PathSegment { ident: Ident { sym: doc, span: bytes(123494..123497) }, arguments: PathArguments::None }] }, eq_token: Eq, value: Expr::Lit { attrs: [], lit: Lit::Str { t
oken: "" } } } }, Attribute { pound_token: Pound, style: AttrStyle::Outer, bracket_token: Bracket, meta: Meta::NameValue { path: Path { leading_colon: None, segments: [PathSegment { 
ident: Ident { sym: doc, span: bytes(123502..123588) }, arguments: PathArguments::None }] }, eq_token: Eq, value: Expr::Lit { attrs: [], lit: Lit::Str { token: " Trait objects can be
 put behind opaque pointers. For example, this declaration can" } } } }, Attribute { pound_token: Pound, style: AttrStyle::Outer, bracket_token: Bracket, meta: Meta::NameValue { path
: Path { leading_colon: None, segments: [PathSegment { ident: Ident { sym: doc, span: bytes(123593..123627) }, arguments: PathArguments::None }] }, eq_token: Eq, value: Expr::Lit { a
ttrs: [], lit: Lit::Str { token: " be used across the FFI border:" } } } }, Attribute { pound_token: Pound, style: AttrStyle::Outer, bracket_token: Bracket, meta: Meta::NameValue { p
ath: Path { leading_colon: None, segments: [PathSegment { ident: Ident { sym: doc, span: bytes(123632..123635) }, arguments: PathArguments::None }] }, eq_token: Eq, value: Expr::Lit 
{ attrs: [], lit: Lit::Str { token: "" } } } }, Attribute { pound_token: Pound, style: AttrStyle::Outer, bracket_token: Bracket, meta: Meta::NameValue { path: Path { leading_colon: N
one, segments: [PathSegment { ident: Ident { sym: doc, span: bytes(123640..123651) }, arguments: PathArguments::None }] }, eq_token: Eq, value: Expr::Lit { attrs: [], lit: Lit::Str {
 token: " " } } } }, Attribute { pound_token: Pound, style: AttrStyle::Outer, bracket_token: Bracket, meta: Meta::NameValue { path: Path { leading_colon: None, segments: [Path
Segment { ident: Ident { sym: doc, span: bytes(123656..123687) }, arguments: PathArguments::None }] }, eq_token: Eq, value: Expr::Lit { attrs: [], lit: Lit::Str { token: " use flutte
r_rust_bridge::*;" } } } }, Attribute { pound_token: Pound, style: AttrStyle::Outer, bracket_token: Bracket, meta: Meta::NameValue { path: Path { leading_colon: None, segments: [Path
Segment { ident: Ident { sym: doc, span: bytes(123692..123716) }, arguments: PathArguments::None }] }, eq_token: Eq, value: Expr::Lit { attrs: [], lit: Lit::Str { token: " use std::f
mt::Debug;" } } } }, Attribute { pound_token: Pound, style: AttrStyle::Outer, bracket_token: Bracket, meta: Meta::NameValue { path: Path { leading_colon: None, segments: [PathSegment
 { ident: Ident { sym: doc, span: bytes(123721..123769) }, arguments: PathArguments::None }] }, eq_token: Eq, value: Expr::Lit { attrs: [], lit: Lit::Str { token: " use std::panic::{
UnwindSafe, RefUnwindSafe};" } } } }, Attribute { pound_token: Pound, style: AttrStyle::Outer, bracket_token: Bracket, meta: Meta::NameValue { path: Path { leading_colon: None, segme
nts: [PathSegment { ident: Ident { sym: doc, span: bytes(123774..123777) }, arguments: PathArguments::None }] }, eq_token: Eq, value: Expr::Lit { attrs: [], lit: Lit::Str { token: ""
 } } } }, Attribute { pound_token: Pound, style: AttrStyle::Outer, bracket_token: Bracket, meta: Meta::NameValue { path: Path { leading_colon: None, segments: [PathSegment { ident: I
dent { sym: doc, span: bytes(123782..123842) }, arguments: PathArguments::None }] }, eq_token: Eq, value: Expr::Lit { attrs: [], lit: Lit::Str { token: " pub struct DebugWrapper(pub 
RustOpaque<Box<dyn Debug>>);" } } } }, Attribute { pound_token: Pound, style: AttrStyle::Outer, bracket_token: Bracket, meta: Meta::NameValue { path: Path { leading_colon: None, segm
ents: [PathSegment { ident: Ident { sym: doc, span: bytes(123847..123850) }, arguments: PathArguments::None }] }, eq_token: Eq, value: Expr::Lit { attrs: [], lit: Lit::Str { token: "
" } } } }, Attribute { pound_token: Pound, style: AttrStyle::Outer, bracket_token: Bracket, meta: Meta::NameValue { path: Path { leading_colon: None, segments: [PathSegment { ident: 
Ident { sym: doc, span: bytes(123855..123912) }, arguments: PathArguments::None }] }, eq_token: Eq, value: Expr::Lit { attrs: [], lit: Lit::Str { token: " // creating a DebugWrapper 
using the opaque_dyn macro" } } } }, Attribute { pound_token: Pound, style: AttrStyle::Outer, bracket_token: Bracket, meta: Meta::NameValue { path: Path { leading_colon: None, segmen
ts: [PathSegment { ident: Ident { sym: doc, span: bytes(123917..123968) }, arguments: PathArguments::None }] }, eq_token: Eq, value: Expr::Lit { attrs: [], lit: Lit::Str { token: " l
et wrap = DebugWrapper(opaque_dyn!(\"foobar\"));" } } } }, Attribute { pound_token: Pound, style: AttrStyle::Outer, bracket_token: Bracket, meta: Meta::NameValue { path: Path { leadi
ng_colon: None, segments: [PathSegment { ident: Ident { sym: doc, span: bytes(123973..124013) }, arguments: PathArguments::None }] }, eq_token: Eq, value: Expr::Lit { attrs: [], lit:
 Lit::Str { token: " // it's possible to name it directly" } } } }, Attribute { pound_token: Pound, style: AttrStyle::Outer, bracket_token: Bracket, meta: Meta::NameValue { path: Pat
h { leading_colon: None, segments: [PathSegment { ident: Ident { sym: doc, span: bytes(124018..124122) }, arguments: PathArguments::None }] }, eq_token: Eq, value: Expr::Lit { attrs:
 [], lit: Lit::Str { token: " pub struct DebugWrapper2(pub RustOpaque<Box<dyn Debug + Send + Sync + UnwindSafe + RefUnwindSafe>>);" } } } }, Attribute { pound_token: Pound, style: At
trStyle::Outer, bracket_token: Bracket, meta: Meta::NameValue { path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { sym: doc, span: bytes(124127..124134) }, arg
uments: PathArguments::None }] }, eq_token: Eq, value: Expr::Lit { attrs: [], lit: Lit::Str { token: " " } } } }], vis: Visibility::Public(Pub), type_token: Type, ident: Ident { s
ym: RustOpaque, span: bytes(124148..124158) }, generics: Generics { lt_token: Some(Lt), params: [GenericParam::Type(TypeParam { attrs: [], ident: Ident { sym: T, span: bytes(124159..
124160) }, colon_token: None, bounds: [], eq_token: None, default: None })], gt_token: Some(Gt), where_clause: None }, eq_token: Eq, ty: Type::Path { qself: None, path: Path { leadin
g_colon: None, segments: [PathSegment { ident: Ident { sym: RustOpaqueMoi, span: bytes(124164..124177) }, arguments: PathArguments::AngleBracketed { colon2_token: None, lt_token: Lt,
 args: [GenericArgument::Type(Type::Path { qself: None, path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { sym: T, span: bytes(124178..124179) }, arguments: PathArguments::None }] } })], gt_token: Gt } }] } }, semi_token: Semi }
[2024-02-10T14:00:05.130Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\source_graph\module_parser.rs:101] parse_syn_item_struct_or_enum item_ident=Ident { sym: StreamSink, span: bytes(125835..125845) }                                                              
[2024-02-10T14:00:05.131Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\source_graph\module_parser.rs:101] parse_syn_item_struct_or_enum item_ident=Ident { sym: FLUTTER_RUST_BRIDGE_HANDLER, span: bytes(127896..127923) }                                             
[2024-02-10T14:00:05.132Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\source_graph\module_parser.rs:150] parse_syn_item_mod module_path=["crate", "frb_generated", "io"]                                                                                              
[2024-02-10T14:00:05.132Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\source_graph\module_parser.rs:180] parse_syn_item_mod_contentful module_path=["crate", "frb_generated", "io"]                                                                                   
[2024-02-10T14:00:05.133Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\source_graph\module_parser.rs:31] parse START info=ModuleInfo { visibility: Inherited, file_path: "\\\\?\\E:\\Workspace\\AndroidCode\\my_rust_app\\rust\\src\\frb_generated.rs", module_path: ["crate", "frb_generated", "io"] }
[2024-02-10T14:00:05.134Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\source_graph\module_parser.rs:77] parse END info=ModuleInfo { visibility: Inherited, file_path: "\\\\?\\E:\\Workspace\\AndroidCode\\my_rust_app\\rust\\src\\frb_generated.rs", module_path: ["crate", "frb_generated", "io"] }
[2024-02-10T14:00:05.135Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\source_graph\module_parser.rs:77] parse END info=ModuleInfo { visibility: Inherited, file_path: "\\\\?\\E:\\Workspace\\AndroidCode\\my_rust_app\\rust\\src\\frb_generated.rs", module_path: ["crate", "frb_generated"] }
[2024-02-10T14:00:05.136Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\source_graph\module_parser.rs:77] parse END info=ModuleInfo { visibility: Public, file_path: "\\\\?\\E:\\Workspace\\AndroidCode\\my_rust_app\\rust\\src\\lib.rs", module_path: ["crate"] }      
[2024-02-10T14:00:05.138Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\function_parser\mod.rs:67] parse_function function name: Ident { sym: encode, span: bytes(56827..56833) }                                                                                       
[2024-02-10T14:00:05.139Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\type_parser\rust_auto_opaque.rs:19] transform_type_rust_auto_opaque convert Boxed(IrTypeBoxed { exist_in_real_api: false, inner: EnumRef(IrTypeEnumRef { ident: IrEnumIdent(NamespacedName { nam
espace: Namespace { joined_path: "crate::api::message" }, name: "Message" }), is_exception: false }) }) -> RustAutoOpaque(IrTypeRustAutoOpaque { ownership_mode: Owned, inner: IrTypeR
ustOpaque { namespace: Namespace { joined_path: "crate::api::message" }, inner: Unencodable(IrTypeUnencodable { namespace: None, string: "flutter_rust_bridge::for_generated::rust_async::RwLock<crate::api::message::Message>", segments: [] }), codec: Moi, brief_name: true } })
[2024-02-10T14:00:05.140Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\function_parser\mod.rs:67] parse_function function name: Ident { sym: decode, span: bytes(57119..57125) }                                                                                       
[2024-02-10T14:00:05.140Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\type_parser\rust_auto_opaque.rs:19] transform_type_rust_auto_opaque convert EnumRef(IrTypeEnumRef { ident: IrEnumIdent(NamespacedName { namespace: Namespace { joined_path: "crate::api::message
" }, name: "Message" }), is_exception: false }) -> RustAutoOpaque(IrTypeRustAutoOpaque { ownership_mode: Owned, inner: IrTypeRustOpaque { namespace: Namespace { joined_path: "crate::
api::message" }, inner: Unencodable(IrTypeUnencodable { namespace: None, string: "flutter_rust_bridge::for_generated::rust_async::RwLock<crate::api::message::Message>", segments: [] }), codec: Moi, brief_name: true } })
[2024-02-10T14:00:05.141Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\function_parser\mod.rs:67] parse_function function name: Ident { sym: greet, span: bytes(57357..57362) }                                                                                        
[2024-02-10T14:00:05.141Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\function_parser\mod.rs:67] parse_function function name: Ident { sym: init_app, span: bytes(57586..57594) }                                                                                     
[2024-02-10T14:00:05.142Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\codegen\parser\function_parser\mod.rs:67] parse_function function name: Ident { sym: hello, span: bytes(57665..57670) }                                                                                        
[2024-02-10T14:00:05.156Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\commands\format_dart.rs:11] execute format_dart path=["E:\\Workspace\\AndroidCode\\my_rust_app\\lib\\src\\rust\\api\\message.dart", "E:\\Workspace\\AndroidCode\\my_rust_app\\lib\\src\\rust\\api\\simple.dart", "E:\\Workspace\\AndroidCode\\my_rust_app\\lib\\src\\rust\\frb_generated.dart", "E:\\Workspace\\AndroidCode\\my_rust_app\\lib\\src\\rust\\frb_generated.io.dart", "E:\\Workspace\\AndroidCode\\my_rust_app\\lib\\src\\rust\\frb_generated.web.dart"] line_length=80                                                                                                        
[2024-02-10T14:00:05.157Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\commands\command_runner.rs:109] execute command: bin=powershell args="-noprofile -command & \"dart\" \"format\" \"--line-length\" \"80\" \"E:\\\\Workspace\\\\AndroidCode\\\\my_rust_app\\\\lib\\\\src\\\\rust\\\\api\\\\message.dart\" \"E:\\\\Workspace\\\\AndroidCode\\\\my_rust_app\\\\lib\\\\src\\\\rust\\\\api\\\\simple.dart\" \"E:\\\\Workspace\\\\AndroidCode\\\\my_rust_app\\\\lib\\\\src\\\\rust\\\\frb_generated.dart\" \"E:\\\\Workspace\\\\AndroidCode\\\\my_rust_app\\\\lib\\\\src\\\\rust\\\\frb_generated.io.dart\" \"E:\\\\Workspace\\\\AndroidCode\\\\my_rust_app\\\\lib\\\\src\\\\rust\\\\frb_generated.web.dart\"" current_dir=None cmd="powershell" "-noprofile" "-command" "& \"dart\" \"format\" \"--line-length\" \"80\" \"E:\\\\Workspace\\\\AndroidCod
e\\\\my_rust_app\\\\lib\\\\src\\\\rust\\\\api\\\\message.dart\" \"E:\\\\Workspace\\\\AndroidCode\\\\my_rust_app\\\\lib\\\\src\\\\rust\\\\api\\\\simple.dart\" \"E:\\\\Workspace\\\\And
roidCode\\\\my_rust_app\\\\lib\\\\src\\\\rust\\\\frb_generated.dart\" \"E:\\\\Workspace\\\\AndroidCode\\\\my_rust_app\\\\lib\\\\src\\\\rust\\\\frb_generated.io.dart\" \"E:\\\\Workspace\\\\AndroidCode\\\\my_rust_app\\\\lib\\\\src\\\\rust\\\\frb_generated.web.dart\""
[2024-02-10T14:00:05.930Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\commands\command_runner.rs:120] command="powershell" "-noprofile" "-command" "& \"dart\" \"format\" \"--line-length\" \"80\" \"E:\\\\Workspace\\\\AndroidCode\\\\my_rust_app\\\\lib\\\\src\\\\rust\\\\api\\\\message.dart\" \"E:\\\\Workspace\\\\AndroidCode\\\\my_rust_app\\\\lib\\\\src\\\\rust\\\\api\\\\simple.dart\" \"E:\\\\Workspace\\\\AndroidCode\\\\my_rust_app\\\\lib\\\\src\\\\rust\\\\frb_generated.dart\" \"E:\\\\Workspace\\\\AndroidCode\\\\my_rust_app\\\\lib\\\\src\\\\rust\\\\frb_generated.io.dart\" \"E:\\\\Workspace\\\\AndroidCode\\\\my_rust_app\\\\lib\\\\src\\\\rust\\\\frb_generated.web.dart\"" stdout=Formatted E:\\Workspace\\AndroidCode\\my_rust_app\\lib\\src\\rust\\api\\message.dart
Formatted E:\\Workspace\\AndroidCode\\my_rust_app\\lib\\src\\rust\\api\\simple.dart
Formatted E:\\Workspace\\AndroidCode\\my_rust_app\\lib\\src\\rust\\frb_generated.dart
Formatted E:\\Workspace\\AndroidCode\\my_rust_app\\lib\\src\\rust\\frb_generated.io.dart
Formatted E:\\Workspace\\AndroidCode\\my_rust_app\\lib\\src\\rust\\frb_generated.web.dart
Formatted 5 files (5 changed) in 0.34 seconds.
 stderr=
[2024-02-10T14:00:05.932Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\commands\format_rust.rs:9] execute format_rust path=["E:\\Workspace\\AndroidCode\\my_rust_app\\rust\\src\\frb_generated.rs", "E:\\Workspace\\AndroidCode\\my_rust_app\\rust\\src\\frb_generated.io.rs", "E:\\Workspace\\AndroidCode\\my_rust_app\\rust\\src\\frb_generated.web.rs"]
[2024-02-10T14:00:05.933Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\commands\command_runner.rs:109] execute command: bin=powershell args="-noprofile -command & \"rustfmt\" \"--edition\" \"2018\" \"E:\\\\Workspace\\\\AndroidCode\\\\my_rust_app\\\\rust\\\\src\\\\frb_generated.rs\" \"E:\\\\Workspace\\\\AndroidCode\\\\my_rust_app\\\\rust\\\\src\\\\frb_generated.io.rs\" \"E:\\\\Workspace\\\\AndroidCode\\\\my_rust_app\\\\rust\\\\src\\\\frb_generated.web.rs\"" current_dir=None cmd="powershell" "-noprofile" "-command" "& \"rustfmt\" \"--edition\" \"2018\" \"E:\\\\Workspace\\\\AndroidCode\\\\my_rust_app\\\\rust\\\\src\\\\frb_generated.rs\" \"E:\\\\Workspace\\\\AndroidCode\\\\my_rust_app\\\\rust\\\\src\\\\frb_generated.io.rs\" \"E:\\\\Workspace\\\\AndroidCode\\\\my_rust_app\\\\rust\\\\src\\\\frb_generated.web.rs\""     
[2024-02-10T14:00:06.279Z DEBUG C:\Users\20557\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\flutter_rust_bridge_codegen-2.0.0-dev.20\src\library\commands\command_runner.rs:120] command="powershell" "-noprofile" "-command" "& \"rustfmt\" \"--edition\" \"2018\" \"E:\\\\Workspace\\\\AndroidCode\\\\my_rust_app\\\\rust\\\\src\\\\frb_generated.rs\" \"E:\\\\Workspace\\\\AndroidCode\\\\my_rust_app\\\\rust\\\\src\\\\frb_generated.io.rs\" \"E:\\\\Workspace\\\\AndroidCode\\\\my_rust_app\\\\rust\\\\src\\\\frb_generated.web.rs\"" stdout= stderr=
[1.0s] Parse                                                                                                                                                                          
  └── [0.6s] Run cargo expand                                                                                                                                                         
  └── [0.4s] Parse source graph                                                                                                                                                       
[0.0s] Generate                                                                                                                                                                       
[1.1s] Polish                                                                                                                                                                         
  └── [0.8s] Run Dart formatter                                                                                                                                                       
  └── [0.3s] Run Rust formatter                                                                                                                                                       
Done!

Expected behavior

i expected find Message class and DeviceInfo class in /lib/src/rust/api/message.dart.

Here is the generated dart code

/lib/src/rust/api/message.dart

// This file is automatically generated, so please do not edit it.
// Generated by `flutter_rust_bridge`@ 2.0.0-dev.20.

// ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import

import '../frb_generated.dart';
import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart';

// Rust type: RustOpaqueMoi<flutter_rust_bridge::for_generated::rust_async::RwLock<crate::api::message::Message>>
@sealed
class Message extends RustOpaque {
  Message.dcoDecode(List<dynamic> wire) : super.dcoDecode(wire, _kStaticData);

  Message.sseDecode(int ptr, int externalSizeOnNative)
      : super.sseDecode(ptr, externalSizeOnNative, _kStaticData);

  static final _kStaticData = RustArcStaticData(
    rustArcIncrementStrongCount:
        RustLib.instance.api.rust_arc_increment_strong_count_Message,
    rustArcDecrementStrongCount:
        RustLib.instance.api.rust_arc_decrement_strong_count_Message,
    rustArcDecrementStrongCountPtr:
        RustLib.instance.api.rust_arc_decrement_strong_count_MessagePtr,
  );
}

/lib/src/rust/api/simple.dart :

import '../frb_generated.dart';
import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart';

String greet({required String name, dynamic hint}) =>
    RustLib.instance.api.greet(name: name, hint: hint);

Future<String> hello({required String name, dynamic hint}) =>
    RustLib.instance.api.hello(name: name, hint: hint);

just function is generated,but none of struct and enum were generated.

Generated binding code

No response

OS

Windows

Version of flutter_rust_bridge_codegen

11

Flutter info

C:\Users\20557>flutter doctor -v
Flutter assets will be downloaded from https://storage.flutter-io.cn. Make sure you trust this source!
[√] Flutter (Channel stable, 3.16.6, on Microsoft Windows [版本 10.0.22621.3007], locale zh-CN)
    • Flutter version 3.16.6 on channel stable at E:\Environment\Flutter\flutter_windows_3.16.6-stable\flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 46787ee49c (5 weeks ago), 2024-01-09 14:36:07 -0800
    • Engine revision 3f3e560236
    • Dart version 3.2.3
    • DevTools version 2.28.4
    • Pub download mirror https://pub.flutter-io.cn
    • Flutter download mirror https://storage.flutter-io.cn

[√] Windows Version (Installed version of Windows is version 10 or higher)

[!] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
    • Android SDK at C:\Users\20557\AppData\Local\Android\sdk
    • Platform android-34, build-tools 34.0.0
    • Java binary at: C:\Users\20557\AppData\Local\Programs\Android Studio\jbr\bin\java
    • Java version OpenJDK Runtime Environment (build 17.0.7+0-b2043.56-10550314)
    ! Some Android licenses not accepted. To resolve this, run: flutter doctor --android-licenses

[√] Chrome - develop for the web
    • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe

[!] Visual Studio - develop Windows apps (Visual Studio Community 2022 17.7.4)
    • Visual Studio at D:\Compiler\VisualStudio
    • Visual Studio Community 2022 version 17.7.34031.279
    • Windows 10 SDK version 10.0.22621.0
    X Visual Studio is missing necessary components. Please re-run the Visual Studio installer for the "Desktop
      development with C++" workload, and include these components:
        MSVC v142 - VS 2019 C++ x64/x86 build tools
         - If there are multiple build tool versions available, install the latest
        C++ CMake tools for Windows
        Windows 10 SDK

[√] Android Studio (version 2023.1)
    • Android Studio at C:\Users\20557\AppData\Local\Programs\Android Studio
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.7+0-b2043.56-10550314)

[√] IntelliJ IDEA Ultimate Edition (version 2022.3)
    • IntelliJ at D:\Compiler\IDEAultimate\IntelliJ IDEA 2022.3
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart

[√] Connected device (4 available)
    • sdk gphone64 x86 64 (mobile) • emulator-5554 • android-x64    • Android 12 (API 31) (emulator)
    • Windows (desktop)            • windows       • windows-x64    • Microsoft Windows [版本 10.0.22621.3007]
    • Chrome (web)                 • chrome        • web-javascript • Google Chrome 109.0.5414.120
    • Edge (web)                   • edge          • web-javascript • Microsoft Edge 121.0.2277.106

[√] Network resources
    • All expected network resources are available.

Version of clang++

No response

Additional context

none

Hi! Thanks for opening your first issue here! 😄

Hi, your enum/struct needs to be used in at least one function in order to be generated.

However, maybe we can somehow improve the DX: e.g. give a hint when this happens, or change the behavior and generate it, etc.

This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new issue.