2016-04-07 22 views
8

stdin'dan tek bir karakter okumaya çalışıyorum, ancak çalışamıyorum. Farklı programda, aynı yöntemi kullandım ve işe yaradı. Ben befunge.rs senin sandık kökü, ancak bir alt modül olmadığını varsayalım`std` modülü neden silinemedi?

src/befunge.rs:220:17: 220:31 error: failed to resolve. Use of undeclared type or module `std::io` [E0433] 
src/befunge.rs:220  let _ = std::io::stdin().read(&mut buffer); 
+0

SO ile ilgili sorular sorduğunuzda, mümkünse lütfen bir [MCVE] (http://stackoverflow.com/help/mcve) belirtin. Böylece, sorunun çözümü için yanıtlar objektif olarak kontrol edilebilir. Örneğiniz için bu [bu basit program] olabilir (https://play.rust-lang.org/?gist=43e3a4de6103ca986767bd304f54fe5e&version=stable&backtrace=0). –

cevap

17

: it Derleme

let mut buffer = [0]; 
let _ = std::io::stdin().read(&mut buffer); 
let a = buffer[0]; 

bu hatayı veriyor. use ...; bildiriminin dışında kullanılan std::io::stdin() gibi yollar, mutlak değil, geçerli modüle göredir. Yolu mutlak yapmak için öneki :: (unix yollarında öneklenen / gibi) ->::std::io::stdin(). Eğer bir alt yolunu kullanıyorsanız en use genellikle en iyi, senin modülünde std::io gibi onu bir kereden fazla

use std; 
std::io::stdin(); 

veya

use std::io; 
io::stdin(); 

oluyor: Alternatif gibi yolun bir kısmını, use olabilir üst.

Sandık kökündeyseniz, ::std ve std arasında bir fark yoktur, çünkü göreli arama yolu köktür. Sadece alt modüller için önemlidir. Ayrıca: use bildirimlerindeki yollar her zaman mutlaktır - bunları geçerli modül öneki self:: ile ilgili yapmak için.

+0

Bu çözümlerin çözmediği yeni bir sorunum var. Ana gönderiyi düzenledim. – Fluffy

+0

Lütfen SO-thread başına sadece bir soru sorun. Yani teoride, düzenlemeniz için ayrı bir soru oluşturmanız gerekir. Ancak: Bu soru SO üzerinde çoktan cevaplandırıldı, bu yüzden daha iyi bir arama yapın. Spoiler: sadece derleyicinin (notu da içeren) tüm hata mesajını okuyun. –

+1

Geçerli modüle göre, mutlak yerine "kullanımı" farklı yapmakta mantıklıyız mı? – WiSaGaN

İlgili konular