アクセス修飾子
-
Rustでの
publicはpubになってprivateの場合は先頭は何もなしでprivate扱いになる// public pub fn 関数名 { } pub mod モジュール名 { } // private fn 関数名 { } mod モジュール名 { }
struct、implについて
- Rustにはclassがないため、代わりに
struct、impl、traitを使用する
【struct】
-
structとは構造体を定義する時に使用する- 構造体とは異なる型のデータをひとまとめにしたもの
- データ名と型を構造体の中に定義する
struct user { pub name: String, }
【impl】
-
implはstruct上で動作する関数を定義することができる-
implは、structと同名にすることでstructのAppleに対して実装を行ってるという認識になる
pub struct Animal { pub name: String } impl Animal { pub fn get_name(&self) -> &str { &self.name } }use web_app::models::users::Animal; fn main() -> (){ let animal = Animal { name: "ゴリラ".to_string()}; println!("{}", Animal::get_name(&animal)); } -
use、extern create、modについて
【extern crate】
- 外部のクレート(ライブラリ)をインポートする時に使う
-
lib.rsに定義するだけで基本的には使用できるようになる
extern crate diesel;
【mod】
-
モジュールとは機能の集まりで関数、モジュールがまとめられている
-
モジュールの定義には3つある
-
mod モジュール名 { … }で定義 -
同じファイル内で
modを定義して使用する```rust // モジュール定義 pub mod my_mod { // 関数の定義 pub fn log(a: &str) { // ターミナルに引数でもらった値を表示 println!("{}",a); }}
fn main() -> (){
// 上記のmy_modのlog関数を利用
my_mod::log("テスト 太郎");
}
-
-
モジュール名.rsを作ってlib.rsにpub mod モジュール名と書いて定義する。つまりファイルからモジュールを定義する。-
別ファイルでモジュールを定義
// モジュール定義 pub mod my_mod { // 関数の定義 pub fn log(a: &str) { // ターミナルに引数でもらった値を表示 println!("{}",a); } } -
lib.rsで下記のようにmodを定義pub mod sample; -
main.rsでuseを扱って読み込んで使用- 今回の場合のパスは
プロジェクト名/ファイル名/モジュール名
use web_app::sample::my_mod; fn main() -> (){ my_mod::log("テスト 太郎 "); } - 今回の場合のパスは
-
-
モジュール名/mod.rsを作って、lib.rsにpub mod モジュール名と書いて定義する-
新しくディレクトリを作成してその配下に
mod.rsを作成してmodを定義pub mod sample; -
さらに作成したディレクトリ配下に
モジュール名.rsを作成してmodを定義// モジュール定義 pub mod my_mod { // 関数の定義 pub fn log(a: &str) { // ターミナルに引数でもらった値を表示 println!("{}",a); } } -
main.rsでuseを扱って読み込んで使用use web_app::sample_mods::sample::my_mod; fn main() -> (){ my_mod::log("テスト 太郎"); }
-
【use】
-
useは各ファイルでモジュール、ライブラリなどのインポート時に利用する -
別ファイルで定義しているモジュールを使いたい場合に使用
use web_app::sample::my_mod fn main() -> (){ my_mod::log("テスト 太郎"); } -
ライブラリなども同様で
useでパスを指定すれば使用する事ができるuse web_app::sample::my_mod use chrono::Local; fn main() -> (){ my_mod::log("テスト 太郎"); // 現在の日付と時刻を表示 println!("{}", Local::now()); } -
使用したライブラリ
- パスについて
- 先頭に
create、プロジェクト名、ライブラリ名などで始まるパスは絶対パス -
selfかsuperで始まるパスは相対パス - 下記のリンクにもパスについて記載がある
- 先頭に
-
asで名前を変更することも可能use web_app::sample::my_mod as test; fn main() -> (){ test::log("テスト 太郎"); }
まとめ
-
structは構造体 -
implを利用する事でstructに動作を実装する事ができる - 外部のクレート(ライブラリ)を使用する場合は
lib.rsにextern crate クレート名 - モジュールは
pub mod モジュール名{ 関数、モジュール }で詳細を定義してlib.rsormod.rsにpub mod モジュール名で定義してuseで使用ができる -
useは絶対パスか相対パスでモジュールやライブラリをインポートして使用する事ができる