Bir şey eksik mi, yoksa Rust'ta desteklenmeyen değişken referanslar mı var? Değişebilir değerden geçmenin deyimsel yolu nedir?
Ben Rust oynuyordum, bir örnek vermek ve tüm sayısal türleri için Euclid's algorithm jenerik uygulamaya çalışmıştır ve ideal ben sadece onları değişken değeriyle argümanları geçmek ve olmasını istedik, ama argüman tipine anahtar kelimemut
ekleyerek reddedilir için derleyici tarafından. Bu yüzden argümanın değiştirilemez bir kopyasını işlev yanlısı olarak ilan etmek zorundayım. Bu idiyomik mi/etki mi?
use std::ops::Rem;
extern crate num;
use self::num::Zero;
pub fn gcd<T: Copy + Zero + PartialOrd + Rem<Output=T>>(a : T, b : T) -> T
{
let mut aa = a;
let mut bb = b;
while bb > T::zero() {
let t = bb;
bb = aa % bb;
aa = t;
}
aa
}
Duh! 'T' önce 'mut' yazıyordum, nasıl değişebilen bir ref tipi imzanın nasıl göründüğüne benziyordu ... Teşekkürler! –
@MaxGalkin yup, başka yerlerde değişebilen bir değişken bağlanmanın nasıl bildirildiğini yansıtır - 'mut foo: u8 = 42'. – Shepmaster
'a: & mut T' ile örneklere bakıyordum, 'mut' türünün yanında ve ben sadece yazının yanında durduğunu sanıyordum :) –