mirror of
https://github.com/ahgamut/rust-ape-example.git
synced 2024-05-15 10:02:42 +00:00
58 lines
1.4 KiB
Rust
58 lines
1.4 KiB
Rust
// ./src/mod/super.md
|
|
|
|
|
|
fn function() {
|
|
println!("called `function()`");
|
|
}
|
|
|
|
mod cool {
|
|
pub fn function() {
|
|
println!("called `cool::function()`");
|
|
}
|
|
}
|
|
|
|
mod my {
|
|
fn function() {
|
|
println!("called `my::function()`");
|
|
}
|
|
|
|
mod cool {
|
|
pub fn function() {
|
|
println!("called `my::cool::function()`");
|
|
}
|
|
}
|
|
|
|
pub fn indirect_call() {
|
|
// Let's access all the functions named `function` from this scope!
|
|
print!("called `my::indirect_call()`, that\n> ");
|
|
|
|
// The `self` keyword refers to the current module scope - in this case `my`.
|
|
// Calling `self::function()` and calling `function()` directly both give
|
|
// the same result, because they refer to the same function.
|
|
self::function();
|
|
function();
|
|
|
|
// We can also use `self` to access another module inside `my`:
|
|
self::cool::function();
|
|
|
|
// The `super` keyword refers to the parent scope (outside the `my` module).
|
|
super::function();
|
|
|
|
// This will bind to the `cool::function` in the *crate* scope.
|
|
// In this case the crate scope is the outermost scope.
|
|
{
|
|
use crate::cool::function as root_function;
|
|
root_function();
|
|
}
|
|
}
|
|
}
|
|
|
|
fn part0() {
|
|
my::indirect_call();
|
|
}
|
|
|
|
pub fn main() {
|
|
part0();
|
|
}
|
|
|