0

構造体とその実装が定義されて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。ルールは何ですか?

構造体と同じモジュールで定義された「プライマリ」関数が最初になり、次に特定のケース用の追加関数 (ドキュメントで説明されています) が必要です。

出来ますか?

4

0 に答える 0