LINUX.ORG.RU

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

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

А ещё удивительнее, если i32 заменить на String. И от ворнинга заодно избавиться.

 ▲ ~/devel/rs cat rec.rs     
fn foo() -> String {
  if false {
    return "".to_string();
  }
  foo()
}

fn main() {
  println!("{}", foo());
}

 ▲ ~/devel/rs rustc rec.rs -o rec -O

 ▲ ~/devel/rs ./rec                 
[1]    14750 segmentation fault (core dumped)  ./rec

Этот Rust сломался. Несите другой.

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

А ещё удивительнее, если i32 заменить на String.

 △ ~/devel/rs cat rec.rs
fn foo() -> String {
  foo()
}

fn main() {
  println!("{}", foo());
}

 ▲ ~/devel/rs rustc rec.rs -o rec -O
warning: function cannot return without recursing
 --> rec.rs:1:1
  |
1 | fn foo() -> String {
  | ^^^^^^^^^^^^^^^^^^ cannot return without recursing
2 |   foo()
  |   ----- recursive call site
  |
  = note: `#[warn(unconditional_recursion)]` on by default
  = help: a `loop` may express intention better if this is on purpose


 ▲ ~/devel/rs ./rec                 
[1]    5694 segmentation fault (core dumped)  ./rec

Этот Rust сломался. Несите другой.