HackerNews

Rustの感染的な借用問題

Rust Contagious Borrow Issue

https://qouteall.fun/qouteall-blog/2025/How%20to%20Avoid%20Fighting%20Rust%20Borrow%20Checker#contagious-borrow-issue


Rustの所有権システムでは、オブジェクトが一つの親にのみ所有されるツリー状の構造を持つ一方で、可変借用は排他性を持ち、他の借用ができなくなる。このため、子供を借用すると親も間接的に借用され、全体のオブジェクトがロックされることから、特に初学者にとって不都合な借用が頻発することがある。この記事では、借用チェッカーが厳しいケースにおいてデータ指向設計、分割借用、ID/ハンドルの使用、ミューテーションをコマンドとして遅延実行する方法など、いくつかの解決策を提案している。また、循環参照の場合の対策や、借用を一時的にするための工夫についても触れられている。