use ahash::AHashMap;
pub mod binding_helpers;
pub mod enums;
pub mod functions;
pub mod methods;
pub mod structs;
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(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_named_let_bindings_pub, gen_serde_let_bindings, gen_unimplemented_body, has_named_params,
is_simple_non_opaque_param, wrap_return,
};
pub use enums::{enum_has_data_variants, gen_enum, gen_pyo3_data_enum};
pub use functions::{collect_trait_imports, gen_function, has_unresolved_trait_methods};
pub use methods::{
gen_constructor, gen_impl_block, gen_method, gen_opaque_impl_block, gen_static_method, is_trait_method_name,
};
pub use structs::{
gen_opaque_struct, gen_opaque_struct_prefixed, gen_struct, gen_struct_default_impl, gen_struct_with_per_field_attrs,
};