Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
rust
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
orestis.malaspin
rust
Commits
a2253ffb
There was a problem fetching the pipeline summary.
Commit
a2253ffb
authored
6 years ago
by
orestis.malaspin
Browse files
Options
Downloads
Patches
Plain Diff
ajout visibilité avec pub et use
parent
640fdb15
No related branches found
No related tags found
No related merge requests found
Pipeline
#
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
modules.md
+127
-1
127 additions, 1 deletion
modules.md
with
127 additions
and
1 deletion
modules.md
+
127
−
1
View file @
a2253ffb
...
...
@@ -151,4 +151,130 @@ sansfont: Sans Serif
```
{.lang-rust}
mon_module::ma_fonction();
mon_module::mon_autre_module::ma_fonction();
```
\ No newline at end of file
```
# Visibilité
## Modules (1/4)
-
Structure fichiers:
-
`src/lib.rs`
```{.lang-rust}
mod mon_module;
```
-
`src/mon_module/mod.rs`
```{.lang-rust}
fn ma_fonction() {
unimplemented!(); // macro très pratique!
}
```
-
`src/main.rs`
```{.lang-rust}
extern crate ma_librairie;
fn main() {
ma_librarie::mon_module::ma_fonction();
}
```
## Modules (2/4)
-
Par défaut les modules sont privés.
```
$ cargo build
Compiling ma_librairie v0.1.0 ($PATH/ma_librairie)
error[E0603]: module `mon_module` is private
--> src/main.rs:4:2
|
4 | ma_librairie::mon_module::ma_fonction();
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: aborting due to previous error
For more information about this error, try `rustc --explain E0603`.
error: Could not compile `ma_librairie`.
To learn more, run the command again with --verbose.
```
## Modules (3/4)
-
On contrôle la visibilité des modules avec
`pub`
{.rust}.
-
On a joute
`pub mon module`
dans
`src/lib.rs`
```{.lang-rust}
pub mod mon_module;
```
-
Par défaut les fonctions sont privées.
```
$ cargo build
Compiling ma_librairie v0.1.0 ($PATH/ma_librairie)
error[E0603]: function `ma_fonction` is private
--> src/main.rs:4:2
|
4 | ma_librairie::mon_module::ma_fonction();
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: aborting due to previous error
For more information about this error, try `rustc --explain E0603`.
error: Could not compile `ma_librairie`.
To learn more, run the command again with --verbose.
```
## Modules (4/4)
-
On a joute
`pub fn ma_fonction()`
dans
`src/mon_module.rs`
```
Compiling ma_librairie v0.1.0 ($PATH/ma_librairie)
Finished dev [unoptimized + debuginfo] target(s) in 1.28s
```
-
Quand plusieurs modules sont imbriqués, les appels sont longs:
`ma_librarie::mon_module::ma_fonction();`
{.rust}
-
Avec
`use`
{.rust}, on peut se simplifier la vie
`src/main.rs`
```{.lang-rust}
extern crate ma_librairie;
use ma_librairie::mon_module::ma_fonction;
fn main() {
ma_fonction();
}
```
-
Ou encore avec
`*`
on peut rendre visible tout le module
```{.lang-rust}
extern crate ma_librairie;
use ma_librairie::mon_module::*;
fn main() {
ma_fonction();
}
```
# Résumé
-
Les modules permettent de compartimenter le code.
-
Par défaut tout ce qui se trouve dans un module est privé.
-
On contrôle la visibilité avec
`pub`
{.rust}
-
Si un item est public il peut être accédé depuis n'importe quel module parent.
-
Si un item est privé il n'est accessible que depuis son parent direct et n'importe lequel de ses modules enfants.
-
On peut rendre visible des sous-modules, ou des items avec
`use`
{.rust}.
\ No newline at end of file
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment