背景
私は、今までC言語やRubyくらいしかプログミング経験がなかった。 最近、Rustを書き始めたことで、初めましての概念がたくさん出てきたので、頭の整理がてらまとめる。
ここに書く内容は、Rust Programming Languageの原文を読んだことのまとめである。
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.という感じ。
全体のイメージはこんな感じ。