use ahash::AHashMap;
pub mod binding_helpers;
pub mod enums;
pub mod functions;
pub mod methods;
pub mod structs;
pub mod trait_bridge;
pub mod type_paths;
pub type AdapterBodies = AHashMap<String, String>;
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum AsyncPattern {
None,
Pyo3FutureIntoPy,
NapiNativeAsync,
WasmNativeAsync,
TokioBlockOn,
}
pub struct RustBindingConfig<'a> {
pub struct_attrs: &'a [&'a str],
pub field_attrs: &'a [&'a str],
pub struct_derives: &'a [&'a str],
pub method_block_attr: Option<&'a str>,
pub constructor_attr: &'a str,
pub static_attr: Option<&'a str>,
pub function_attr: &'a str,
pub enum_attrs: &'a [&'a str],
pub enum_derives: &'a [&'a str],
pub needs_signature: bool,
pub signature_prefix: &'a str,
pub signature_suffix: &'a str,
pub core_import: &'a str,
pub async_pattern: AsyncPattern,
pub has_serde: bool,
pub type_name_prefix: &'a str,
pub option_duration_on_defaults: bool,
pub opaque_type_names: &'a [String],
pub skip_impl_constructor: bool,
pub cast_uints_to_i32: bool,
pub cast_large_ints_to_f64: bool,
pub named_non_opaque_params_by_ref: bool,
pub lossy_skip_types: &'a [String],
pub serializable_opaque_type_names: &'a [String],
}
pub(super) const TRAIT_METHOD_NAMES: &[&str] = &[
"default", "from", "from_str", "into", "eq", "ne", "lt", "le", "gt", "ge", "add", "sub", "mul", "div", "rem",
"neg", "not", "index", "deref",
];
pub use binding_helpers::{
gen_async_body, gen_call_args, gen_call_args_with_let_bindings, gen_lossy_binding_to_core_fields,
gen_lossy_binding_to_core_fields_mut, gen_named_let_bindings_no_promote, gen_named_let_bindings_pub,
gen_serde_let_bindings, gen_unimplemented_body, has_named_params, is_simple_non_opaque_param, wrap_return,
wrap_return_with_mutex,
};
pub use enums::{enum_has_data_variants, gen_enum, gen_pyo3_data_enum};
pub use functions::{collect_explicit_core_imports, collect_trait_imports, gen_function, has_unresolved_trait_methods};
pub use methods::{
gen_constructor, gen_constructor_with_renames, gen_impl_block, gen_impl_block_with_renames, gen_method,
gen_opaque_impl_block, gen_static_method, is_trait_method_name,
};
pub use structs::{
can_generate_default_impl, gen_opaque_struct, gen_opaque_struct_prefixed, gen_struct, gen_struct_default_impl,
gen_struct_with_per_field_attrs, gen_struct_with_rename, type_needs_mutex, type_needs_tokio_mutex,
};