sontixyou blog

技術まわり、ガジェット関連について

Rustのmoduleとcrate

背景

私は、今までC言語Rubyくらいしかプログミング経験がなかった。 最近、Rustを書き始めたことで、初めましての概念がたくさん出てきたので、頭の整理がてらまとめる。

ここに書く内容は、Rust Programming Languageの原文を読んだことのまとめである。

doc.rust-lang.org

module

moduleには2種類ある。パブリックかプライベートかの2種類。

先頭にmodがつくかつかないかの違いだけ。

moduleはネストできるし、関数を中に定義することも可能。

crate

Rustには2種類のcrateがある。

  • binary crate
  • library crate

binary crate

これはbinary crate。

各クレートには、実行ファイルが実行されたときに何が起こるかを定義するmainと呼ばれる関数を持つ必要がある。

// main.rs
fn main {
  println!('hello rust');
}

library crate

main関数を持たず、複数のプロジェクトで供することを目的として機能、関数を指す

これはlibrary crate

// number_calculator.rs
pub fn add(a: i32, b: i32) -> i32 {
    a + b
}

package

単数または複数のcrateを束ねたものがpackage

基本的に、cargo.tomlに書いてあるnameはpackage

関係でいうと、package has many crates or one crate.

crate has many modules or one module.という感じ。

全体のイメージはこんな感じ。

github.com