flutter_rust_bridge/rust_opaque/
mod.rs

1pub(crate) mod dart2rust;
2pub(crate) mod rust2dart;
3pub(crate) mod utils;
4
5use crate::for_generated::{BaseArc, StdArc};
6use std::marker::PhantomData;
7
8/// Please refer to [RustOpaque] for doc.
9#[repr(transparent)]
10#[derive(Debug)]
11pub struct RustOpaqueBase<T: ?Sized + 'static, A: BaseArc<T>> {
12    arc: A,
13    _phantom: PhantomData<T>,
14}
15
16/// Please refer to `RustOpaque` for doc.
17///
18/// For readers migrating from old versions: The new `RustOpaque` is at `crate::frb_generated::RustOpaque`.
19pub type RustOpaqueNom<T> = RustOpaqueBase<T, StdArc<T>>;
20
21#[doc(hidden)]
22#[macro_export]
23macro_rules! frb_generated_rust_opaque_def {
24    (default_rust_opaque = $default_rust_opaque:ident) => {
25        use $crate::for_generated::StdArc;
26        use $crate::RustOpaqueNom;
27
28        /// Please refer to `RustOpaque` for doc.
29        pub type RustOpaqueMoi<T> = $crate::for_generated::RustOpaqueBase<T, MoiArc<T>>;
30
31        /// A wrapper to support [arbitrary Rust types](https://cjycode.com/flutter_rust_bridge/guides/types/arbitrary).
32        pub type RustOpaque<T> = $default_rust_opaque<T>;
33    };
34}
35
36// https://github.com/fzyzcjy/flutter_rust_bridge/pull/1574
37#[deprecated(note = "It is empty trait and can be directly deleted")]
38pub trait DartSafe {}
39
40#[allow(deprecated)]
41impl<T> DartSafe for T {}