Rust access control: Difference between revisions
From wikinotes
Line 19: | Line 19: | ||
* Modules are private by default, but can be published by their parent module | * Modules are private by default, but can be published by their parent module | ||
* Parent modules are not visible to their children | * Parent modules are not visible to their children by default, but can be accessed with <code>super</code> or with absolute paths from <code>crate::</code> | ||
* Modules are implied by the filename, you can however create a submodule within a file using <code>mod ${your_module}</code> | * Modules are implied by the filename, you can however create a submodule within a file using <code>mod ${your_module}</code> | ||
</blockquote><!-- modules --> | </blockquote><!-- modules --> |
Latest revision as of 15:50, 8 February 2023
By default in rust, everything is private (current module access only).
Documentation
visibility and privacy | https://doc.rust-lang.org/reference/visibility-and-privacy.html |
Objects
- Objects are private by default.
- A private object instance cannot be returned to a different module.
- A public struct with private fields cannot be instantiated outside of it's module.
Modules
- Modules are private by default, but can be published by their parent module
- Parent modules are not visible to their children by default, but can be accessed with
super
or with absolute paths fromcrate::
- Modules are implied by the filename, you can however create a submodule within a file using
mod ${your_module}