У меня есть структура и ее реализация, определенная в 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"); }
}
}
Когда я генерирую do c, блоки реализации отображаются в следующем порядке ( и, к сожалению, не показывая, откуда берутся блоки реализации):
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
). Какое правило?
Я бы хотел, чтобы сначала были определены "первичные" функции, определенные в том же модуле, что и структура, а затем дополнительные для конкретных c случаев (которые описаны в документации).
Возможно ли это?