Rust to C++のfriend
キーワードにある代替案を利用したい場合があります。C++ Rustのフレンド様のコンストラクタ
MOD A0:
pub struct A {
pub a0: u8,
a1: SomeType,
}
impl A {
pub fn fa0(...) { ... }
fn fa1(...) { ... }
}
モジュールb0
とc0
がA
のすべてのパブリックとプライベートのメンバーにアクセスする必要がクレートで、私は以下のモジュールがあります。コードは、それがmod a0
でない限り行うことはできません。 A
とA::a0
とA::fa0
のみをこのクレートと接続する他のクレートに公開したいと思いますが、このクレート内でA
(公開と非公開)の完全な実装にアクセスしたいと思います。 lib.rs
に私がいる間、
pub struct A {
pub a0: u8,
inner: Inner
}
pub struct Inner { /* all pub fields */ }
pub fn get_inner<'a>(obj: &'a mut A) -> &'a Inner {
&mut obj.inner
}
モジュールb0
とc0
アクセスget_inner
ので、Inner
:
MOD A0:
私は通常のようなものをやって終わる
mod a0;
mod b0;
mod c0;
pub use a0::A; // so other crates cannot use get_inner(...) etc.
これは非常に便利です私は何かが欠けているようだ。それともこれが唯一の方法ですか?
まだありません。この問題を解決するには[RFC 1422](https://github.com/rust-lang/rfcs/pull/1422)までお待ちください。 –
RFC 1422は、2016年3月21日に[承諾](https://github.com/rust-lang/rfcs/pull/1422#issuecomment-199443868)でした。 – malbarbo