06. Шаблонни типове и типажи

06. Шаблонни типове и типажи

06. Шаблонни типове и типажи

25 октомври 2017

Административни неща

Преговор

Въпроси

TODO израз със pattern-matching с "намерете трите проблема":

Generics

TODO image (какъв image пък тук? Turbofish? https://twitter.com/steveklabnik/status/659034597062262784?lang=en)

Generics

Вече сме ги виждали

Generics

functions

fn max(list: &[i32]) -> i32 {
    let mut max = list[0];

    for &item in list.iter() {
        if item > max {
            max = item;
        }
    }

    max
}

Generics

functions

fn main() {
    let numbers = [1337, 42, 94, 280];

    println!("Max: {}", max(numbers));
}

Generics

functions

fn main() {
    let numbers = [1337, 42, 94, 280];
    println!("Max: {}", max(numbers));

    let numbers = [3.14, 1.337];
    println!("Max: {}", max(numbers)); // компилационна грешка!
}

Generics

functions

fn max_i32(list: &[i32]) -> i32 {
    // ...
}

fn max_f32(list: &[f32]) -> f32 {
    // ...
}

Generics

functions

fn max<T>(list: &[T]) -> T {
    // ...
}

Generics

functions

error[E0369]: binary operation `>` cannot be applied to type `T`
  |
5 |         if item > max {
  |            ^^^^
  |
note: an implementation of `std::cmp::PartialOrd` might be missing for `T`

Traits

TODO image (???)

Въпроси