錆を使用してリストを実装

リストで最高潮に達する、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)。
        } 
    } 
}

 

おすすめ

転載: www.cnblogs.com/cutepig/p/11459177.html