ИЛ
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