jenerik API'leri inşa etmek Yineleyici özelliği kullanırım ama ben aslında sert toplama türlerine karşı ancak bunun yerine yineleyicinızı karşı değil benim yöntemlerini tasarım nasıl merak ediyorum. Bu yöntemi düşünün. Ben HashSet
veya HashMap
bir o kullanmak istiyorsanıznasıl ağaçlar için orman görmeyebilir
pub fn print_strings(strings: Vec<String>) {
for val in strings.iter() {
println!("{}", val);
}
}
Açıkçası bu kısa düşüyor.
use std::collections::*;
fn main() {
let strings = vec!("Foo", "Bar");
let mut more_strings = HashMap::new();
more_strings.insert("foo", "bar");
more_strings.insert("bar", "foo");
print_strings(&strings.iter());
print_strings(&more_strings.values())
}
fn print_strings(strings: &Iterator<Item=&str>) {
for val in strings {
println!("{}", val);
}
}
Çocuk Parkı (aynı zamanda uzun derleyici hatası görmek için)
Maalesef bu ya hile yapmak gibi görünmüyor:
Yani, bu çalıştı. Neyi kaçırıyorum?
hata mesajı belirtin. Uygulamanızın nesi yanlış olduğunu size söyler.Sahip olduğunuz yineleyici için 'Iterator :: Item' türünün ne olduğunu gözden geçirmek isteyebilirsiniz. – Shepmaster
Bunun çok uzun olduğu için iyi bir fikir olduğunu sanmıyorum. Tüm derleyici hata çıktısını görmek için oyun parkı bağlantısını tıklayabilirsiniz. – Christoph
'Vec' 'da' .iter() 'yi çağırdığınızda, bir' Iterator - 'alırsınız. Yani, 'Vec <&str>' 'da' .iter() 'yi çağırdığınızda, bir' Iterator
- 'değil, bir' Iterator
- 'olsun. Iterator için '.cloned()' metoduna bakmalısınız, probleminizi çözmenize yardımcı olmalıdır. –
Adrian