LINUX.ORG.RU

История изменений

Исправление kirk_johnson, (текущая версия) :

Ну тупым тут оказался вовсе не я. Ты второй с тем же неправильным ответом. Правильный - в постах MyTrooName.

Чо, правда, да? Смотри:

$ cat src/main.rs
struct A<'a> {
    x: &'a i32
}

impl<'a> A<'a> {
    fn get(&self) -> &i32 {
        self.x
    }
}

fn foo(a: A) -> &i32 {
    a.get()
}

fn main() {
    let x = 0;
    let s = A { x: &x };

    println!("{}", foo(s));
}
$ cargo build
   Compiling t v0.1.0 (/tmp/t)
error[E0515]: cannot return value referencing function parameter `a`
  --> src/main.rs:12:5
   |
12 |     a.get()
   |     -^^^^^^
   |     |
   |     returns a value referencing data owned by the current function
   |     `a` is borrowed here

error: aborting due to previous error

For more information about this error, try `rustc --explain E0515`.
error: Could not compile `t`.

To learn more, run the command again with --verbose.

Только не отмазывайся, что не знаешь английского, ок?

Исходная версия kirk_johnson, :

Ну тупым тут оказался вовсе не я. Ты второй с тем же неправильным ответом. Правильный - в постах MyTrooName.

Чо, правда, да? Смотри:

$ cargo build
   Compiling t v0.1.0 (/tmp/t)
error[E0515]: cannot return value referencing function parameter `a`
  --> src/main.rs:12:5
   |
12 |     a.get()
   |     -^^^^^^
   |     |
   |     returns a value referencing data owned by the current function
   |     `a` is borrowed here

error: aborting due to previous error

For more information about this error, try `rustc --explain E0515`.
error: Could not compile `t`.

To learn more, run the command again with --verbose.

Только не отмазывайся, что не знаешь английского, ок?