TGViewer
Rust Rust @rust_code · 8.92K subscribers
Post #929 3.49K
🧠 Задача на Rust — для продвинутых разработчиков


use std::cell::RefCell;
use std::rc::Rc;

fn main() {
let a = Rc::new(RefCell::new(1));
let b = a.clone();

let c = {
let mut val = b.borrow_mut();
*val += 1;
Rc::try_unwrap(b).ok().unwrap().into_inner()
};

println!("a: {}", a.borrow());
println!("c: {}", c);
}


Что выведет код?

A.
a: 2
c: 2

B.
a: 1
c: 2

C.
Panic at runtime due to unwrap failure ✅

D.
Compilation error due to ownership rules

📌
Ответ:
Правильный ответ: C — Panic at runtime due to unwrap failure

Почему:
Мы создаем a как Rc<RefCell<i32>>, из него делаем b = a.clone() → теперь у Rc два владельца.

Мы мутируем значение через b.borrow_mut(), увеличиваем его на 1.

Затем пытаемся сделать Rc::try_unwrap(b).

⚠️ Rc::try_unwrap требует, чтобы Rc был единственным владельцем. Но у нас всё ещё есть a, то есть ссылка остаётся → unwrap не срабатывает и unwrap() вызывает паник на runtime.


@rust_code
  • 👍 16
  • 😭 7
  • ❤ 3
  • 🥰 2
  • 🥴 1
  • 😴 1
More from @rust_code
  1. Sep 28, 2026🦀 Qt открывает Rust полноценный путь к кроссплатформенному UI Qt представила Qt Bridge fo…
  2. Sep 26, 2026Как создать пустой vector по-гениальному
  3. Sep 24, 2026🦀 Как доказать, что Rust-код работает правильно: Amazon рассказывает о Verus Rust предотв…
  4. Sep 24, 2026❌В IT сейчас кризис джунов, но только не в кибербезе. ❗️Рынку не хватает 50 000 специалист…
  5. Sep 24, 2026Rust без аллокатора: `fff` снизил пиковое потребление памяти через `mmap` Во время тестиро…
  6. Sep 23, 2026photo post
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →