構造体とその実装が定義されてmain.rs
おり、補完的な実装が他のモジュールで定義されています。
/// Bla bla.
pub struct Data {
val: i32,
}
/// Primary functions.
impl Data {
pub fn new(val: i32) -> Data { Data { val } }
pub fn get(&self) -> i32 { self.val }
}
/// FFI doc.
pub mod ffi {
use super::Data;
/// Additional functions for special cases.
impl Data {
pub fn adapt(&mut self) { self.val += 1; }
}
}
/// Test doc.
pub mod test {
use super::Data;
/// Functions useful for tests.
impl Data {
pub fn report(&self) { println!("hello"); }
}
}
ドキュメントを生成すると、実装ブロックが次の順序で表示されます (残念ながら、実装ブロックがどこから来たのかは表示されません)。
impl Data
Additional functions for restricted use.
pub fn adapt(&mut self)
impl Data
Functions useful for tests.
pub fn report(&self)
impl Data
Primary functions.
pub fn new(val: i32) -> Data
pub fn get(&self) -> i32
これは、相対モジュール名または絶対モジュール名のアルファベット順ではないようです (クレート名が か かは関係ありませんaaa
) zzz
。ルールは何ですか?
構造体と同じモジュールで定義された「プライマリ」関数が最初になり、次に特定のケース用の追加関数 (ドキュメントで説明されています) が必要です。
出来ますか?