Bonjour (bonsoir plutôt ),
Je me re-suis mis à apprendre Rust depuis le début de la semaine et pour m'excercer je suis en train de faire un interpréteur BF.
Les instructions '<', '>', '+', '-', et '.' sont déjà implementé, donc pour tester j'ai voulu coder la fonction interpret
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | pub fn interpret(&mut self) -> Result<(), BFError> { for c in self.prg.chars() { match c { '>' => try!(self.move_right()), '<' => try!(self.move_left()), '+' => try!(self.increment()), '-' => try!(self.decrement()), '.' => try!(self.putchar()), /*',' =>, '[' =>, ']' =>,*/ _ => {} } } Ok(()) } |
Mais j'ai une erreur:
1 2 3 4 5 6 7 8 9 | error: cannot borrow `*self` as mutable because `self.prg` is also borrowed as immutable 54 |> for c in self.prg.chars() { |> -------- immutable borrow occurs here 55 |> match c { 56 |> '>' => try!(self.move_right()), |> ^^^^ mutable borrow occurs here ... 66 |> } |> - immutable borrow ends here |
J'ai beau chercher, je ne trouve pas comment faire pour éviter ça, hormis un truc crade je trouve, qui est de rajouter .collect::<Vec<char>>()
à self.prg.chars()
Est-ce que vous auriez une idée ?
Merci,
Ardakaniz
P.S: Autre petite question, comment on fait pour créer des méthodes privées ? Parce que j'aimerais bien que mes fonctions increment
, decrement
, etc… le soit pour ne pas pouvoir les appeler de l'extérieur. Merci encore
+0
-0