pub struct ModuleMapper { /* private fields */ }Expand description
Maps Python modules/packages to their Rust equivalents
Implementations§
Source§impl ModuleMapper
impl ModuleMapper
Sourcepub fn new() -> Self
pub fn new() -> Self
Create a new module mapper with default Python to Rust mappings
§Examples
use depyler_core::module_mapper::ModuleMapper;
let mapper = ModuleMapper::new();
assert!(mapper.get_mapping("os").is_some());
assert!(mapper.get_mapping("json").is_some());Sourcepub fn map_import(&self, import: &Import) -> Vec<RustImport>
pub fn map_import(&self, import: &Import) -> Vec<RustImport>
Map a Python import to Rust use statements
§Examples
use depyler_core::module_mapper::{ModuleMapper, RustImport};
use depyler_core::hir::{Import, ImportItem};
let mapper = ModuleMapper::new();
let import = Import {
module: "json".to_string(),
items: vec![ImportItem::Named("loads".to_string())],
};
let rust_imports = mapper.map_import(&import);
assert_eq!(rust_imports[0].path, "serde_json::from_str");
assert!(rust_imports[0].is_external);Sourcepub fn get_dependencies(&self, imports: &[Import]) -> Vec<(String, String)>
pub fn get_dependencies(&self, imports: &[Import]) -> Vec<(String, String)>
Get all external dependencies needed
§Examples
use depyler_core::module_mapper::ModuleMapper;
use depyler_core::hir::{Import, ImportItem};
let mapper = ModuleMapper::new();
let imports = vec![
Import {
module: "json".to_string(),
items: vec![ImportItem::Named("loads".to_string())],
},
Import {
module: "os".to_string(),
items: vec![ImportItem::Named("getcwd".to_string())],
},
];
let deps = mapper.get_dependencies(&imports);
assert_eq!(deps.len(), 1); // Only json is external
assert_eq!(deps[0], ("serde_json".to_string(), "1.0".to_string()));Sourcepub fn get_mapping(&self, module_name: &str) -> Option<&ModuleMapping>
pub fn get_mapping(&self, module_name: &str) -> Option<&ModuleMapping>
Get module mapping for a given module name
§Examples
use depyler_core::module_mapper::ModuleMapper;
let mapper = ModuleMapper::new();
if let Some(mapping) = mapper.get_mapping("json") {
assert_eq!(mapping.rust_path, "serde_json");
assert!(mapping.is_external);
assert_eq!(mapping.version.as_ref().unwrap(), "1.0");
}Trait Implementations§
Auto Trait Implementations§
impl Freeze for ModuleMapper
impl RefUnwindSafe for ModuleMapper
impl Send for ModuleMapper
impl Sync for ModuleMapper
impl Unpin for ModuleMapper
impl UnwindSafe for ModuleMapper
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more