Différence entre mod et use dans Rust

Muhammad Adil 30 janvier 2023
  1. Concept de use en Rust
  2. Notion de mod en Rust
  3. Différence fondamentale entre mod et use dans Rust
Différence entre mod et use dans Rust

Rust est un langage de programmation moderne et rapide conçu pour être un langage de programmation système sûr, simultané et fonctionnel. Il a été créé par Mozilla en 2006.

Rust a trois concepts principaux : propriété, emprunt et durée de vie. Rust utilise les deux mots clés : use et mod.

Le mot-clé use permet d’importer le contenu du module dans le scope courant. Cela signifie qu’il rendra toutes les fonctions du module disponibles à l’appel à partir de ce point.

mod, d’autre part, n’importe qu’un seul élément d’un autre module dans votre portée actuelle afin qu’il puisse être appelé ou référencé selon les besoins sans se soucier de ce que quoi que ce soit d’autre dans ce module soit accessible à partir de maintenant.

Concept de use en Rust

En poursuivant un chemin différent, use ajoute un autre élément à l’espace de noms actuel. Un élément est un objet générique auquel vous devez accéder, tel qu’une fonction, une structure ou un trait.

Une route est une hiérarchie de modules que vous devez suivre pour l’atteindre. L’espace de noms actuel fait référence à l’introduction d’un objet dans le fichier actuel afin que vous puissiez y accéder comme s’il était local.

Caractéristiques de use dans Rust

Rust propose un mécanisme assez dynamique pour les utilisateurs qui simplifie l’introduction de nombreux objets dans l’espace de noms existant avec un minimum d’effort.

  1. Vous pouvez utiliser le mot-clé self pour introduire le module parent universel et tout autre élément dont vous souhaitez bénéficier dans l’espace de noms.
  2. Pour éviter les problèmes d’identité, utilisez le mot-clé as pour changer les choses.
  3. Vous pouvez utiliser la syntaxe de type glob pour intégrer plusieurs objets dans l’espace de noms actuel :
use std::path::{self, Path, PathBuf};

Notion de mod en Rust

Les modules vous permettent d’organiser votre code dans des fichiers séparés. Ils divisent votre code en morceaux logiques qui peuvent être importés et utilisés dans d’autres modules ou programmes.

En bref, mod sert à spécifier des modules et des sous-modules afin que vous puissiez les utiliser dans votre fichier .rs actuel, ce qui peut être compliqué. Pourquoi ne pas simplement l’utiliser ?

Un module dans Rust n’est rien de plus qu’un conteneur pour zéro ou plusieurs choses. C’est une méthode d’organisation logique des éléments afin que votre module puisse facilement traverser.

Les modules peuvent être utilisés pour créer l’arborescence d’une caisse, vous permettant de répartir votre travail sur plusieurs fichiers de manière arbitraire si nécessaire. Un seul fichier .rs peut inclure plusieurs modules, ou un seul fichier peut contenir plusieurs modules.

Enfin, vous pouvez utiliser mod pour regrouper les objets de manière logique. Vous pouvez construire des blocs mod dans un seul fichier .rs, ou vous pouvez diviser votre code source en plusieurs fichiers .rs, utiliser mod, et laisser Cargo générer l’arborescence de votre caisse.

Différence fondamentale entre mod et use dans Rust

La principale différence entre eux est que use importe un module d’une bibliothèque externe, tandis que mod crée un module interne qui ne peut être utilisé que dans le fichier en cours.

Examinons un exemple utilisant le mot-clé use.

use hello::rota::function as my_function;
fn function() {
    println!("demo `function()`");
}
mod hello {
    pub mod rota {
        pub fn function() {
            println!("demo `hello::rota`");
        }
    }
}
fn main() {
    my_function();

    println!("Coming");
    {
        use crate::hello::rota::function;
        function();
        println!("Returning");
    }
    function();
}

Production:

demo `hello::rota`
Coming
demo `hello::rota`
Returning
demo `function()`

Cliquez ici pour vérifier la démonstration en direct du code mentionné ci-dessus.

Muhammad Adil avatar Muhammad Adil avatar

Muhammad Adil is a seasoned programmer and writer who has experience in various fields. He has been programming for over 5 years and have always loved the thrill of solving complex problems. He has skilled in PHP, Python, C++, Java, JavaScript, Ruby on Rails, AngularJS, ReactJS, HTML5 and CSS3. He enjoys putting his experience and knowledge into words.

Facebook