Rust - Modules

Mickey·2022년 1월 14일
0

Rust

목록 보기
20/32
post-thumbnail
post-custom-banner

https://www.tutorialspoint.com/rust/rust_modules.htm

Module은 코드의 논리적 그룹
여러 모듈이 crate라는 단위로 컴파일됨
Rust는 바이너리 crate나 라이브러리 create를 포함 할 수 있음
바이너리 crate는 main() 메서드가 있는 실행 가능한 프로젝트
라이브러리 crate는 다른 프로젝트에서 재사용 할 수 있는 컴포넌트 그룹
라이브러리 crate는 바이너리 crate와 달리 진입점(main() 메서드)가 없음

Cargo tool은 crate를 관리하는데 사용
Module은 다른 프로그래밍 언어의 namespace와 유사
crate.io에서 crate를 다운받아 사용 가능

Sr.No.TermDescription
1modulecrate 내에서 논리적으로 그룹화된 코드 집합
2crateRust의 컴파일 단위로 바이너리 또는 라이브러리로 컴파일 됨
3cargocrate에 대한 공식 Rust 패키지 관리 도구
4crate.io공식 Rust 패키지 저장소
//public module
pub mod a_public_module {
   pub fn a_public_function() {
      //public function
   }
   fn a_private_function() {
      //private function
   }
}
//private module
mod a_private_module {
   fn a_private_function() {
   }
}

Module은 public 또는 private
private은 다른 module에서 접근 할 수 없음
Rust의 module은 기본적으로 private
public module로 설정 하려면 pub 키워드를 사용

module 정의

pub mod movies {
   pub fn play(name:String) {
      println!("Playing movie {}",name);
   }
}
fn main(){
   movies::play("Herold and Kumar".to_string());
}


use 키워드

use 키워드는 공개 모듈을 가져오는 데 사용
use public_module_name::function_name;

pub mod movies {
   pub fn play(name:String) {
      println!("Playing movie {}",name);
   }
}
use movies::play;
fn main(){
   play("Herold and Kumar ".to_string());
}


중첩된 module

module은 중첩될 수 있음

pub mod movies {
   pub mod english {
      pub mod comedy {
         pub fn play(name:String) {
            println!("Playing comedy movie {}",name);
         }
      }
   }
}
use movies::english::comedy::play; 
// importing a public module

fn main() {
   // short path syntax
   play("Herold and Kumar".to_string());
   play("The Hangover".to_string());

   //full path syntax
   movies::english::comedy::play("Airplane!".to_string());
}


라이브러리 crate 생성후 바이너리 crate에서 사용

Step 1 - 프로젝트 폴더 생성

Step 2 - 프로젝트에 메타 데이터 추가를 위해 Cargo.toml 파일 편집

[package]
name = "movies_lib"
version = "0.1.0"
authors = ["Mohtashim"]

Step 3 - lib.rs 파일 편집

pub mod movies;

Step 4 - movie.rs 파일 편집

pub fn play(name:String){
   println!("Playing movie {} :movies-app",name);
}

Step 5 - 라이브러리 crate 빌드

라이브러리 crate 폴더의 root에서 cargo build 명령을 이용하여 빌드

Step 6 - Test Application 생성

폴더 및 파일 생성

Step 7 - Cargo.toml 파일 편집

[package]
name = "test_for_movie_lib"
version = "0.1.0"
authors = ["Mohtashim"]

[dependencies]
movies_lib = { path = "../movie-lib" }

Step 8 - main.rs 파일 편집

extern crate movies_lib;
use movies_lib::movies::play;
fn main() {
   println!("inside main of test ");
   play("Tutorialspoint".to_string())
}

Step 9 - Test Application 빌드

profile
Mickey
post-custom-banner

0개의 댓글