// Поскольку `i32` не является обобщённым типом, эта функция
// также не является обобщённой.
fn gen_spec_i32(_s: SGen
// Объявляем функцию `generic`, которая принимает аргумент `_s` типа `SGen
// Поскольку `SGen
// является обобщённой над `T`.
fn generic
fn main() {
// Используем не обобщённые функции.
reg_fn(S(A)); // Конкретный тип.
gen_spec_t(SGen(A)); // Неявно определён тип параметра `A`.
gen_spec_i32(SGen(6)); // Неявно определён тип параметра `i32`.
// Явно определён тип параметра `char` в `generic()`.
generic::
// Неявно определён параметр типа `char` в `generic()`.
generic(SGen('c'));
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Функции и структуры
Подобно функциям, реализации требуют выполнения некоторых условий, чтобы оставаться обобщёнными.
#![allow(unused)]
fn main() {
struct S;
struct GenericVal
impl GenericVal
impl GenericVal
{}
impl
}
struct Val {
val: f64,
}
struct GenVal
gen_val: T,
}
// Реализация Val
impl Val {
fn value(&self) -> &f64 {
&self.val
}
}
// Реализация GenVal для обобщённого типа `T`
impl
fn value(&self) -> &T {
&self.gen_val
}
}
fn main() {
let x = Val { val: 3.0 };
let y = GenVal { gen_val: 3i32 };
println!("{}, {}", x.value(), y.value());
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Функции, возвращающие ссылки, impl и struct