Rust에서 Mod와 Use의 차이점

Muhammad Adil 2023년1월30일
  1. Rust의 use 개념
  2. Rust의 mod 개념
  3. Rust에서 moduse의 기본적인 차이점
Rust에서 Mod와 Use의 차이점

Rust는 안전하고 동시적이며 기능적인 시스템 프로그래밍 언어로 설계된 현대적이고 빠른 프로그래밍 언어입니다. 2006년 모질라에서 만들었습니다.

Rust에는 소유권, 차용, 수명이라는 세 가지 주요 개념이 있습니다. Rust는 usemod라는 두 가지 키워드를 사용합니다.

use 키워드는 모듈의 내용을 현재 범위로 가져오는 데 사용됩니다. 이것은 모듈 내의 모든 함수를 이 시점부터 호출할 수 있게 한다는 것을 의미합니다.

반면에 ‘mod’는 다른 모듈의 단일 항목만 현재 범위로 가져오기 때문에 해당 모듈의 다른 항목이 지금부터 액세스할 수 있다는 걱정 없이 필요에 따라 호출하거나 참조할 수 있습니다.

Rust의 use 개념

다른 경로를 추구함으로써 use는 현재 네임스페이스에 다른 항목을 추가합니다. 항목은 함수, 구조체 또는 특성과 같이 액세스해야 하는 일반 개체입니다.

경로는 도달하기 위해 따라야 하는 모듈 계층입니다. 현재 네임스페이스는 객체를 현재 파일로 가져오는 것을 의미하므로 마치 로컬에 있는 것처럼 액세스할 수 있습니다.

Rust에서 use의 기능

Rust는 최소한의 노력으로 기존 네임스페이스에 많은 객체를 간단하게 도입할 수 있도록 하는 사용자를 위한 상당히 동적인 메커니즘을 제공합니다.

  1. self 키워드를 사용하여 범용 상위 모듈과 네임스페이스에 사용하려는 기타 항목을 도입할 수 있습니다.
  2. 신원 문제를 방지하려면 as 키워드를 사용하여 변경하십시오.
  3. glob과 유사한 구문을 사용하여 여러 객체를 현재 네임스페이스로 가져올 수 있습니다.
use std::path::{self, Path, PathBuf};

Rust의 mod 개념

모듈을 사용하면 코드를 별도의 파일로 구성할 수 있습니다. 다른 모듈이나 프로그램에서 가져와 사용할 수 있는 논리적 조각으로 코드를 나눕니다.

간단히 말해서 mod는 현재 .rs 파일에서 사용할 수 있도록 모듈과 하위 모듈을 지정하는 데 사용되며 복잡할 수 있습니다. 왜 그냥 사용하지?

Rust의 모듈은 0개 이상의 것을 담는 컨테이너에 불과합니다. 모듈이 쉽게 탐색할 수 있도록 항목을 논리적으로 구성하는 방법입니다.

모듈을 사용하여 크레이트의 트리 구조를 생성할 수 있으므로 필요한 경우 여러 파일에 작업을 임의로 분할할 수 있습니다. 단일 .rs 파일에는 여러 모듈이 포함될 수 있으며 단일 파일에는 여러 모듈이 포함될 수 있습니다.

마지막으로 mod를 사용하여 객체를 논리적으로 그룹화할 수 있습니다. 단일 .rs 파일에 mod 블록을 구성하거나 여러 .rs 파일에 소스 코드를 나누고 mod를 사용하고 Cargo가 크레이트의 트리 구조를 생성하도록 할 수 있습니다.

Rust에서 moduse의 기본적인 차이점

이들의 주요 차이점은 use는 외부 라이브러리에서 모듈을 가져오는 반면 mod는 현재 파일 내에서만 사용할 수 있는 내부 모듈을 생성한다는 것입니다.

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();
}

출력:

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

여기를 클릭 위에서 언급한 코드의 라이브 데모를 확인하십시오.

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