2015-04-19 43 views
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。但似乎使用八位組是一個更好的主意。

+11

你不能。私人事物的整個想法是,他們不能在他們定義的模塊之外使用。 –

+0

爲什麼你需要'AsInner'特性? –

+1

我同意@DanielFath - 現在這個問題已經被肯定地回答了,或許你應該問另外一個問題並且儘量避免[XY問題](http://meta.stackexchange.com/questions/66377/what-是-XY-問題)(如果適用)。 – Shepmaster

回答

5

弗拉基米爾Matveev說得好:

你不能。私人事物的整個想法是,他們不能在他們定義的模塊之外使用。

+0

謝謝,我添加了一些關於我想要做的解釋。 –