ИЛ
Path::new(&OsStr).join(&str)
Size: a a a
ИЛ
Path::new(&OsStr).join(&str)
ИЛ
Z
IL
pub(crate) struct PrivateType {}
pub(crate) mod private_module {
pub trait PrivateTrait { fn foo(&self, pr: &PrivateType); }
}
pub struct PubType {}
impl PrivateTrait for PubType { fn foo(&self, pr: &PrivateType) {} }
impl
функция foo
утекает приватный тип PrivateType
.pub(crate) trait PrivateTrait
, то все работает хорошо.PrivateType
-то в любом случае приватный, и PrivateTrait
тоже приватный фактически, так как в приватном модуле.EG
pub(crate) struct PrivateType {}
pub(crate) mod private_module {
pub trait PrivateTrait { fn foo(&self, pr: &PrivateType); }
}
pub struct PubType {}
impl PrivateTrait for PubType { fn foo(&self, pr: &PrivateType) {} }
impl
функция foo
утекает приватный тип PrivateType
.pub(crate) trait PrivateTrait
, то все работает хорошо.PrivateType
-то в любом случае приватный, и PrivateTrait
тоже приватный фактически, так как в приватном модуле.EG
IL
IL
IL
IL
IL
use ...
. Но затем сам Default::default() для этого типа я могу свободно использовать вне подмодуля, ничего не объявляя через use. Как Раст разбирается, где заимплеменчен Default? Может он в одном модуле заимплеменчен так, а в другом этак. Или вообще в двух разных крейтах.EG
use ...
. Но затем сам Default::default() для этого типа я могу свободно использовать вне подмодуля, ничего не объявляя через use. Как Раст разбирается, где заимплеменчен Default? Может он в одном модуле заимплеменчен так, а в другом этак. Или вообще в двух разных крейтах.EG
EG
IL
EG
IL
IL