私のクラスノートにはHasArea
の特性を実装するコードがあり、この領域は錆びの本の例に似ています。Rustジェネリック関数では、いつTまたは&Tとして入力を受け取りますか?
trait HasArea<T> {
fn area(& self) -> T,
}
fn print<T: Display, S: HasArea<T>>(s: &S) {
println!("", s.area()); // println sth must impl Display trait
}
struct Circle {
x: T,
y: T,
r: T,
}
impl <T: Copy + Mul <Output = T>>
HasArea<T> for Circle<T>
{
fn area(&self) -> T {
self.r * self.r
}
}
入力としてshape: T
を使用し錆帳、にそれを比較:教授のノートには、以下の通りである教授がs: &S
を使用する理由錆ブックがshape: T
を使用しながら、
trait HasArea {
fn area(&self) -> f64;
}
struct Circle {
x: f64,
y: f64,
radius: f64,
}
impl HasArea for Circle {
fn area(&self) -> f64 {
std::f64::consts::PI * (self.radius * self.radius)
}
}
fn print_area<T: HasArea>(shape: T) {
println!("This shape has an area of {}", shape.area());
}
fn main() {
let c = Circle {
x: 0.0f64,
y: 0.0f64,
radius: 1.0f64,
};
print_area(c);
}
私は、わかりません。一般的な関数を実装するときは誰でも助けてくれますか?x: &T
と入力すると、いつx: T
?
無関係ですが、私は興味があります:どの大学ですか?私はあなたが答えた後、このコメントを削除します;-) –
UC-Davisの学部CSクラスに問題はありません。 – enaJ