0
我試圖運行下面的代碼片段:如何使用其他模塊的私人特質?
use std::net::Ipv4Addr;
use std::ffi::CString;
use std::sys_common::AsInner;
fn main() {
let ip: Ipv4Addr = Ipv4Addr::new(127,0,0,1);
println!("{}", ip.as_inner().s_addr);
}
這種失敗
test.rs:3:5: 3:29 error: trait `AsInner` is private
test.rs:3 use std::sys_common::AsInner;
^~~~~~~~~~~~~~~~~~~~~~~~
test.rs:7:20: 7:33 error: source trait is private
test.rs:7 println!("{}", ip.as_inner().s_addr);
^~~~~~~~~~~~~
note: in expansion of format_args!
<std macros>:2:25: 2:56 note: expansion site
<std macros>:1:1: 2:62 note: in expansion of print!
<std macros>:3:1: 3:54 note: expansion site
<std macros>:1:1: 3:58 note: in expansion of println!
test.rs:7:5: 7:42 note: expansion site
error: aborting due to 2 previous errors
我看到AsInner
特點是私人在http://doc.rust-lang.org/nightly/src/std/net/ip.rs.html#238 如何使用的特質?
編輯: 我試圖將一個Ipv4Addr轉換爲一個int,我想我可以讀取底層的in_addr。但似乎使用八位組是一個更好的主意。
你不能。私人事物的整個想法是,他們不能在他們定義的模塊之外使用。 –
爲什麼你需要'AsInner'特性? –
我同意@DanielFath - 現在這個問題已經被肯定地回答了,或許你應該問另外一個問題並且儘量避免[XY問題](http://meta.stackexchange.com/questions/66377/what-是-XY-問題)(如果適用)。 – Shepmaster