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