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;
が必要です。