<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://wiki.squi.fr/index.php?action=history&amp;feed=atom&amp;title=Rust_%3A_iterateurs</id>
	<title>Rust : iterateurs - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.squi.fr/index.php?action=history&amp;feed=atom&amp;title=Rust_%3A_iterateurs"/>
	<link rel="alternate" type="text/html" href="https://wiki.squi.fr/index.php?title=Rust_:_iterateurs&amp;action=history"/>
	<updated>2026-06-12T01:36:41Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://wiki.squi.fr/index.php?title=Rust_:_iterateurs&amp;diff=2373&amp;oldid=prev</id>
		<title>Justine : Page créée avec « = Itérateurs = Ce sont des objets permettant d&#039;itérer sur, par exemple, un vecteur (ou autre).  Je ne vais pas réécrire le rust book, mais on peut créer un itérateur à partir d&#039;un vecteur et l&#039;utiliser:   &lt;nowiki&gt; fn iterator_demonstration() {     let v1 = vec![1, 2, 3];      let mut v1_iter = v1.iter();      assert_eq!(v1_iter.next(), Some(&amp;1));     assert_eq!(v1_iter.next(), Some(&amp;2));     assert_eq!(v1_iter.next(), Some(&amp;3));     assert_eq!(v1_iter.next... »</title>
		<link rel="alternate" type="text/html" href="https://wiki.squi.fr/index.php?title=Rust_:_iterateurs&amp;diff=2373&amp;oldid=prev"/>
		<updated>2022-12-06T17:14:16Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec « = Itérateurs = Ce sont des objets permettant d&amp;#039;itérer sur, par exemple, un vecteur (ou autre).  Je ne vais pas réécrire le rust book, mais on peut créer un itérateur à partir d&amp;#039;un vecteur et l&amp;#039;utiliser:   &amp;lt;nowiki&amp;gt; fn iterator_demonstration() {     let v1 = vec![1, 2, 3];      let mut v1_iter = v1.iter();      assert_eq!(v1_iter.next(), Some(&amp;amp;1));     assert_eq!(v1_iter.next(), Some(&amp;amp;2));     assert_eq!(v1_iter.next(), Some(&amp;amp;3));     assert_eq!(v1_iter.next... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Itérateurs =&lt;br /&gt;
Ce sont des objets permettant d&amp;#039;itérer sur, par exemple, un vecteur (ou autre).&lt;br /&gt;
&lt;br /&gt;
Je ne vais pas réécrire le rust book, mais on peut créer un itérateur à partir d&amp;#039;un vecteur et l&amp;#039;utiliser:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
fn iterator_demonstration() {&lt;br /&gt;
    let v1 = vec![1, 2, 3];&lt;br /&gt;
&lt;br /&gt;
    let mut v1_iter = v1.iter();&lt;br /&gt;
&lt;br /&gt;
    assert_eq!(v1_iter.next(), Some(&amp;amp;1));&lt;br /&gt;
    assert_eq!(v1_iter.next(), Some(&amp;amp;2));&lt;br /&gt;
    assert_eq!(v1_iter.next(), Some(&amp;amp;3));&lt;br /&gt;
    assert_eq!(v1_iter.next(), None);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un itérateur, c&amp;#039;est tout simplement un struct avec un méthode &amp;quot;next&amp;quot;. Ici, j&amp;#039;en créée un à partir de mon Vecteur. Le next() n&amp;#039;est pas intuitif:&lt;br /&gt;
* Mon itérateur commence case 0.&lt;br /&gt;
* Je fais next() : il renvoie Some(le contenu) ou None si c&amp;#039;est vide&lt;br /&gt;
* Il avance à la case suivante.&lt;br /&gt;
&lt;br /&gt;
Il garde sa case en permanence. On peut le visualiser comme une tête de lecture sur une bande, qui avance case par case (comme dans une Turing Machine).&lt;br /&gt;
&lt;br /&gt;
== peekable ==&lt;br /&gt;
C&amp;#039;est sympa, mais si je veux connaître la suite, je suis obligée de faire avancer mon itérateur (ma tête de lecture) : c&amp;#039;est parfois embêtant.&lt;br /&gt;
&lt;br /&gt;
Je peux faire un itérateur &amp;quot;peekable&amp;quot;, qui va me permettre de &amp;quot;peek&amp;quot; la case suivante:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
  let sequence = [1, 2, 3, 4];&lt;br /&gt;
  //Je rend mon itérateur peekable avec peekable()&lt;br /&gt;
  let mut p = sequence.iter().peekable();&lt;br /&gt;
  while let Some(n) = p.next(){&lt;br /&gt;
    println!(&amp;quot;Value from iterator: {}&amp;quot;, n);&lt;br /&gt;
    //Je peux peek()&lt;br /&gt;
    println!(&amp;quot;Peeking for next value: {:?}&amp;quot;, p.peek());&lt;br /&gt;
    println!(&amp;quot;Peeking again, but it&amp;#039;s still: {:?}&amp;quot;, p.peek());&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tout comme next(), peek renvoie un Some() / None&lt;/div&gt;</summary>
		<author><name>Justine</name></author>
	</entry>
</feed>