ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ способ ΠΎΠ±Ρ…ΠΎΠ΄Π° borrow checker Π² Rust

Jakub KΔ…dzioΕ‚ka ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» proof-of-concept, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ нСпосрСдствСнныС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, связанныС с ошибкой Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ компилятора Rust, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π±Π΅Π·ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΡƒΠΆΠ΅ Π½Π° протяТСниС Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… Π»Π΅Ρ‚.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ Jakub, позволяСт ΠΎΠ±ΠΎΠΉΡ‚ΠΈ Borrow Checker посрСдством ΠΎΡ‡Π΅Π½ΡŒ простого Ρ‚Ρ€ΡŽΠΊΠ°:

fn main() {
let boom = fake_static::make_static(&vec![0; 1<<20]);
println!("{:?}", boom);
}

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ просит Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΎΠ±Ρ…ΠΎΠ΄ Π² Production, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π΅Π³ΠΎ Ρ†Π΅Π»ΡŒΡŽ Π±Ρ‹Π»ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈΠ²Π»Π΅Ρ‡ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅, ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ Rust.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: linux.org.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ