小编Tia*_*Shi的帖子

`for...in` 循环中的 Rust 借用规则

为什么这三个print_max功能都会起作用?哪一种是最佳实践?是 的for number in number_list快捷方式吗for number in number_list.iter()

fn main() {
    let number_list = vec![34, 50, 25, 100, 65];

    print_max_1(&number_list);
    print_max_2(&number_list);
    print_max_3(&number_list);
}

fn print_max_1(number_list: &[u16]) {
    let mut largest = &number_list[0]; // borrow the first number
    for number in number_list.iter() { // borrowing?
        if number > largest {
            largest = number;
        }
    }
    println!("The largest number is {}", largest);
}

fn print_max_2(number_list: &[u16]) {
    let mut largest = &number_list[0]; // borrow the first …
Run Code Online (Sandbox Code Playgroud)

rust borrowing

5
推荐指数
1
解决办法
1378
查看次数

在 Rust 中使用泛型时,“编译时无法知道 `str` 类型的值的大小”

以下代码将工作并打印Foo("hello")

#[derive(Debug)]
struct Foo<'a>(&'a str);

impl<'a> From<&'a str> for Foo<'a> {
    fn from(s: &'a str) -> Self {
        Foo(s)
    }
}

fn main() {
    let s: &str = "hello";
    let foo = Foo::from(s);
    println!("{:?}", foo);
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用泛型,并将 all 更改strT,它将不起作用:

#[derive(Debug)]
struct Foo<'a, T>(&'a T);

impl<'a, T> From<&'a T> for Foo<'a, T> {
    fn from(s: &'a T) -> Self {
        Foo(s)
    }
}

fn main() {
    let s: &str = "hello";
    let foo = Foo::from(s); …
Run Code Online (Sandbox Code Playgroud)

rust

4
推荐指数
1
解决办法
780
查看次数

标签 统计

rust ×2

borrowing ×1