Puo ea Rust programming 1.42 tokollo

e hatisitsoeng tokollo ea puo ea lenaneo la sistimi Mafome 1.42, e thehiloeng ke morero oa Mozilla. Puo e shebana le polokeho ea mohopolo, e fana ka taolo ea memori ea othomathike, hape e fana ka lisebelisoa tsa ho fihlela ts'ebetso e phahameng ea ts'ebetso ntle le ho sebelisa pokello ea lithōle le nako ea nako.

Taolo ea memori ea othomathike ea Rust e lokolla moqapi ho tsoa manolong a pointer le ho sireletsa khahlano le mathata a bakoang ke ho qhekella ha memori ea boemo bo tlase, joalo ka phihlello ea memori e sa lefelloeng, litšupiso tsa null pointer, buffer overruns, joalo-joalo. Motsamaisi oa liphutheloana o ntse a ntlafatsoa ho aba lilaebrari, ho netefatsa ho bokelloa le ho laola litšepe ka morero. thepa, ho u lumella ho fumana lilaebrari tse hlokahalang bakeng sa lenaneo ka ho tobetsa hanngoe feela. Sebaka sa polokelo se tšehetsoa ho amohela lilaebrari crates.io.

ka sehloohong boiqapelo:

  • E kentsoe tšehetso bakeng sa litempele bakeng sa likarolo tse tšoanang tsa lilae (li-arrays tse matla, selae). Pejana, lipapali tse nepahetseng li ne li lumelloa, empa joale hoa khoneha ho sebelisa lihahi tse tšoailoeng ".." ho koahela likarolo tse setseng tsa sehlopha. Ka mohlala:

    fn foo(mantsoe: &[&str]) {
    bapisa mantsoe {

    // e hlahloba lintlha tse qalang tsa sehlopha ebe e iphapanyetsa
    likarolo tse li latelang
    ["Dumela", "Lefatshe", "!", ..] => println!("Hello World!"),

    // e hlahloba likarolo tse peli tsa pele "Foo" le "Bar", 'me tse ling kaofela ha li bohlokoa
    ["Foo", "Bar", ..] => println!("Baz"),

    // hlokomoloha ntho e 'ngoe le e' ngoe, empa ntho ea ho qetela e tlameha ho ba "!".
    [.., “!”] => println!(“!!!”),

    // karolong e qalang re kenyelletsa ntho e 'ngoe le e' ngoe ntle le ntho ea ho qetela, e lokelang ho ba "z"
    [qala @ .., "z"] => println!("e qala ka: {:?}", qala),

    // qetellong ea selae re beha ntho e 'ngoe le e' ngoe ntle le ntho ea pele, e lokelang ho ba "a".
    ["a", qetella @ ..] => println!("e qetella ka: {:?}", qetellong),

    phomolo => println!("{:?}", phomola),
    }
    }

  • E kentse "matches" e ncha e ncha, e nkang polelo le paterone joalo ka kenyelletso, 'me e khutlisa "'nete" haeba paterone e lumellana le polelo. Setšoantšo se ka sebelisa ts'ebetso ea "|". le "haeba".

    match self.partial_cmp(tse ling) {
    Tse ling(Tse) => 'nete,
    _ => bohata,
    }

    e ts'oanang!(boithati.karolelano_cmp(tse ling), Ba bang(Tse nyane))

    let foo = 'f';
    tiisetso!(match!(foo, ‘A’..=’Z’ | ‘a’..=’z’));

    let bar = Ba bang(4);
    assert!(matches!(bar, Some(x) if x > 2));

  • Melaetsa ea ho tšoha e bonts'itsoeng ha e sebelisoa hampe
    mefuta Khetho le Sephetho, joale bonts'a linomoro tsa mohala tse nang le sehokelo sa khoutu e letselitseng bothata, ho fapana le likhokahano tsa khoutu e kenyang mohala ho libcore. Mohlala, phetoho e ama mehala ea ho phutholla le ho lebella ho feta Kgetho::Ha ho letho, kapa ho senyeha ha o sebedisa unwrap_err, lebella, lebella_err, le mekgwa e tshwanang ya mofuta wa Sephetho.

  • Motsamaisi oa sephutheloana sa Cargo o fana ka phetisetso ea "proc_macro crate" sebakeng sa "ka ntle" bakeng sa liphutheloana tse nang le li-macros tsa procedural. Phetoho ena e lumella taelo ea "ts'ebeliso" hore e sebelisoe ho li-macros tsa procedural ntle le ho hlakisa "extern crate proc_macro;" khoutu. Ka mohlala, haeba lenaneo le sebelisa mohala "sebelisa proc_macro:: TokenStream;", joale khoutu e tla lula e sebetsa haeba "extern crate proc_macro;" e tlosoa ho eona.
  • Bokhoni ba laeborari e tloaelehileng bo ekelitsoe. Ka hare :: Ha ho letho eketsoe Ts'ehetso ea Send and Sync bakeng sa boleng bofe kapa bofe ba T.
    Pin ea Mehala::{mapa_ha ea hlahlojoa, 'mapa_o sa hlahlojoa_mut} tlisitsoe ho tloha ho tlameha ho khutlisa boleng ba mofuta bakeng sa ts'ebetsong ea "Size".
    Ho io::Cursor kenngwa tshebetsong PartialEq le Eq. Sebopeho sa "const" se etsa qeto ea monyetla oa ho sebelisoa maemong afe kapa afe ho fapana le li-constants, dirisitsoe bakeng sa Sebopeho :: mokhoa o mocha.

  • Karolo e ncha ea API e fetiselitsoe sehlopheng se tsitsitseng, ho kenyelletsa le CondVar e tsitsitseng::wait_while, CondVar::wait_timeout_while,
    DebugMap::key, DebugMap:: boleng,
    Ka letsohoRopa :: nka,
    ptr::slice_from_raw_parts_mut and ptr::slice_from_raw_parts.

  • Phoso::mokgwa wa tlhaloso o tlositswe.
  • E fane ka tšehetso ea boemo ba bobeli bakeng sa li-platform tsa armv7a-none-eabi le riscv64gc-tse sa tsejoeng-linux-gnu. Tšehetso bakeng sa laebrari e tloaelehileng bakeng sa sethala sa riscv64gc-unknown-linux-gnu se fanoe.
    Apple 32-bit sethaleng theotsoe boemong ho fihlela boemong ba boraro ba ts'ehetso, e bolelang ts'ehetso ea motheo, empa ntle le tlhahlobo e ikemetseng le ho phatlalatsoa ha mehaho ea molao. Ho fokotseha ha tšehetso ho bakoa ke hore Apple ha e sa tšehetsa li-platform tsa 32-bit.

Source: opennet.ru

Eketsa ka tlhaloso