リストで最高潮に達する、n番目のコンパイルが失敗経験し、錆本当に複雑
難易度:Rcは<>の使い方が精通していません。チェッカーを借りること精通していません
文言の一部が最短ではないかもしれません
使用のstd :: RC :: Rcは、 メインFN(){ !のprintln( "こんにちは、世界!"); リチウムを聞かせ= ListInternal { データ:1、 次:なし、 }。 リチウムを聞かせ= ListInternal { データ:図2に示すように、 次:一部(RC ::新しい(LI)) }。 せMUT 1 =一覧{次:一部(LI)}。 iについて1..10 {で l.push_back(I)。 } l.print()。 } 構造体ListInternal { データ:I32、 次:オプション<Rcの<ListInternal >> } 構造体リスト{ 次:オプション<ListInternal> } IMPL ListInternal { FN印刷(&自己){ println( "{}"、self.data)!。 いくつかの(REF V)= self.next {許可すれば v.print()。 } } FN print_loop(&自己){ せMUTさt =自己。 ループ{ !のprintln( "{}"、t.data)。 いくつかせた場合(REFをV)= t.next { T = V。 }他{ 破ります。 } } } (&MUT自己)最後FN - >&MUT自己{ せMUTさt =自己。 ループ{ もしせいくつか(REF MUT V)= t.next { T = Rcは:: get_mut(V).unwrap(); }他{ ブレーク; } } T } } のimplリスト{ FN新しい() - >リスト{ リスト{次:なし} } FN印刷(&自己){ ましょう場合、一部(REF V)= self.next { v.print_loop(); } } FNの一back(&MUT自己、データ:I32){ LETのリチウム= ListInternal { データ:データ、 次:なし、 }。 いくつかの(REF MUT V)= self.next {みようかの 。v.last()次=一部(RC ::新(LI)); }他{ self.next =一部(LI)。 } } }