Pebble Coding

ソフトウェアエンジニアによるIT技術、数学の備忘録

rust のファイル分割

rust のソースファイル分割方法はC++やswiftとはかなり違って戸惑いますが、なんとか分割できたのでメモしておきます。
rustではファイル名イコールモジュール名と覚えましょう。
C++やswiftはファイル名にほとんど意味はありませんが、rustは超厳しいです。
以下、重要な点のみを記載しました。

ディレクトリ構造

src/lib.rs  
src/unit.rs  
src/polynomial.rs  


lib.rsの内容

pub mod unit;
pub mod polynomial;

unit.rsの内容

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct Unit {
    pub coef: BigInt,
    pub xpow: BigInt,
    pub ypow: BigInt,
}

polynomial.rsの内容

use super::unit;

type Unit = unit::Unit;

#[derive(Debug, Clone)]
struct Polynomial {
    pub units: Vec<Unit>,
}

Polynomial構造体の宣言にUnit構造体が必要です。
兄弟モジュールを参照するには
use super::unit;
が必要なことが分かります。
さらに、unit::Unitと書かずにUnitと書くためには型エイリアス
type Unit = unit::Unit;
が必要です。



https://github.com/pebble8888/modular-polynomial