pub struct ModuleUnit {
pub name: String,
pub attributes: Vec<String>,
pub doc: Option<String>,
pub declares: Vec<DeclareStatements>,
pub visibility: Visibility,
pub functions: Vec<FunctionUnit>,
pub structs: Vec<StructUnit>,
pub traits: Vec<TraitUnit>,
pub impls: Vec<ImplUnit>,
pub submodules: Vec<ModuleUnit>,
pub source: Option<String>,
}
Expand description
Represents a module in the code
Fields§
§name: String
The name of the module
attributes: Vec<String>
Attributes applied to the module
doc: Option<String>
The document for the module
declares: Vec<DeclareStatements>
The declares in the module, e.g. imports, use statements, mod statements, c includes, python/js imports, etc.
visibility: Visibility
The visibility of the module
functions: Vec<FunctionUnit>
Functions defined in the module
structs: Vec<StructUnit>
Structs defined in the module
traits: Vec<TraitUnit>
Traits defined in the module
impls: Vec<ImplUnit>
Implementation blocks defined in the module
submodules: Vec<ModuleUnit>
Sub-modules defined in the module
source: Option<String>
Source code of the module declaration
Implementations§
Source§impl ModuleUnit
Implementation of ModuleUnit.
impl ModuleUnit
Implementation of ModuleUnit.
§Examples
use codebank::{ModuleUnit, Visibility};
// Create a new public module
let module = ModuleUnit::new(
"example".to_string(),
Visibility::Public,
Some("Module documentation".to_string()),
);
assert_eq!(module.name, "example");
assert!(matches!(module.visibility, Visibility::Public));
assert_eq!(module.doc, Some("Module documentation".to_string()));
assert!(module.functions.is_empty());
assert!(module.structs.is_empty());
assert!(module.traits.is_empty());
assert!(module.impls.is_empty());
assert!(module.submodules.is_empty());
Sourcepub fn new(name: String, visibility: Visibility, doc: Option<String>) -> Self
pub fn new(name: String, visibility: Visibility, doc: Option<String>) -> Self
Creates a new module unit with the given name, visibility, and documentation.
§Arguments
name
- The name of the modulevisibility
- The visibility level of the moduledocument
- Optional documentation for the module
§Examples
use codebank::{ModuleUnit, Visibility};
let module = ModuleUnit::new(
"my_module".to_string(),
Visibility::Public,
Some("Module docs".to_string()),
);
assert_eq!(module.name, "my_module");
Trait Implementations§
Source§impl Debug for ModuleUnit
impl Debug for ModuleUnit
Source§impl Default for ModuleUnit
impl Default for ModuleUnit
Source§fn default() -> ModuleUnit
fn default() -> ModuleUnit
Returns the “default value” for a type. Read more
Source§impl Formatter for ModuleUnit
impl Formatter for ModuleUnit
fn format( &self, strategy: &BankStrategy, language: LanguageType, ) -> Result<String>
Auto Trait Implementations§
impl Freeze for ModuleUnit
impl RefUnwindSafe for ModuleUnit
impl Send for ModuleUnit
impl Sync for ModuleUnit
impl Unpin for ModuleUnit
impl UnwindSafe for ModuleUnit
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