Rust: wrong borrow order? -
while programming sudoku solver in rust had issue code related borrowing. while issue easy solve (with little bit of verbosity), seemed strange me compiler didn't accept first code.
it difficult explain problem is, have made little example
use io::stdio::println; struct dog; impl dog { fn bark(&self, text: &str) { println(text); } fn get_text(&mut self) -> ~str { ~"some text" } } fn main() { let mut dog = dog; // causes error dog.bark(dog.get_text()); // allowed let text = dog.get_text(); dog.bark(text); } is bug? if not, why borrow checker enforce coding way?
yes, bug: #6268.
the borrow checker doesn't seem understand arguments evaluated time original method called , thinks &mut self of get_text aliasing &self of bark (and having aliasing &mut pointer illegal).
Comments
Post a Comment