Dieser Artikel behandelt vier überraschende Einschränkungen des Rust-Borrow-Checkers, auf die selbst erfahrene Rust-Programmierer stoßen können. Die erste Einschränkung betrifft die Unfähigkeit des Borrow-Checkers, match- und return-Anweisungen vollständig zu berücksichtigen, was zu redundanten Prüfungen bei der Arbeit mit HashMaps führt. Die zweite Einschränkung betrifft die asynchrone Programmierung, wobei Rust derzeit nicht in der Lage ist, bestimmte Asynchronous-Callback-Typsignaturen auszudrücken. Die dritte konzentriert sich auf FnMut-Closures, die kein erneutes Ausleihen von gefangenen Variablen zulassen, wodurch der Zugriff auf veränderliche Zustände in asynchronen Operationen eingeschränkt wird. Schließlich führt das Fehlen von Kontrollfluss-Bewusstsein im Send-Checker dazu, dass einige Futures, die Send sein sollten, fälschlicherweise als nicht Send markiert werden. Der Autor veranschaulicht diese Einschränkungen und ihre Herausforderungen mit konkreten Codebeispielen und Workarounds und plädiert für Verbesserungen des Rust-Typsystems, um die Produktivität der Entwickler zu steigern.
Mehr lesen