2015-03-09 6 views
5

bulundu. Bu kod, çünkü derlemek olmaz: wrong number of lifetime parameters: expected 1, found 0 [E0107]. Bu ne anlama geliyor?yanlış numara: 1 beklendiği, ben Rust işaretçileri fathoming gerçekten zorlanıyorum 0

struct Planet<'a> { 
    name: &'a str, 
    radius_km: i32, 
    surface_area_km2: i64, 
    orbital_period_days: i32, 
    distance_from_sun: i64 
} 

fn mercury() -> Planet { 
    Planet { 
     name: "Mercury", 
     radius_km: 2_440, 
     surface_area_km2: 74_800_000, 
     orbital_period_days: 88, 
     distance_from_sun: 57_910_000 
    } 
} 

fn main() { 
    let mercury = Box::new(mercury()); 
    println!("{}",mercury.name) 
} 
+1

Not bir span içerir ('^ ~~~ ') [sorun göstermesine yardımcı olur] o (http://is.gd/poWU1h) . dize programının tüm ömrü için yaşar çünkü static' 'siz de 'seçim olabilir bu durumda, işleri a'' – Shepmaster

cevap

6

O birini oluşturur sizin işlevi gerekir yapı için tanım dolayısıyla bir tür parametresi içerdiğini söyleyerek, bu yüzden oluyor. Hata mesajı * da * sorun hattını içerir, ve bu

struct Planet<'a>{ 
    name : &'a str, 
    radius_km: i32, 
    surface_area_km2: i64, 
    orbital_period_days: i32, 
    distance_from_sun: i64 
} 

fn mercury<'a>()->Planet<'a>{ 
    Planet{ 
     name:"Mercudy", 
     radius_km: 2_440, 
     surface_area_km2: 74_800_000, 
     orbital_period_days: 88, 
     distance_from_sun: 57_910_000 
    } 
} 

fn main(){ 
    let planet = mercury(); 
    println!("{}", planet.name) 
} 
+1

ederken'. – Shepmaster

+0

Şahsen ben sadece ne olursa olsun str '& yerine o Dize yapmış olurdu, ama bu sorulan soru bu değil. İki seçenek arasında ne fark olacağını merak ediyorum. –

+1

Hangi iki seçenek arasında? Eğer String kullanırsanız, her defasında "civa" dediğinizde, burada gerçekten gerekli olmayan bir bellek ayırırsınız. Eğer “civa” üzerinde bir ömür boyu parametrede kalırsanız, “civa” nın * arayanı * hangi ömrünün “a” olacağına karar verir. Bu iyi, çünkü “statik” ömür boyu her zaman daha fazla olacaktır. Geri dönüş ömrünü '' durağan '' olarak işaretlemek, yalnızca bu durumda daha esnek ve kullanışlı olmaktan çıkıyor. – Shepmaster