Rust programming lus tso tawm 2021 (1.56)

Kev tso tawm ntawm cov kab lus programming Rust 1.56, tsim los ntawm Mozilla qhov project, tab sis tam sim no tsim los ntawm kev txhawb nqa ntawm lub koom haum ywj pheej tsis muaj txiaj ntsig Rust Foundation, tau tshaj tawm. Ntxiv nrog rau tus lej version tsis tu ncua, qhov kev tso tawm kuj raug xaiv los ntawm Rust 2021 thiab cim kev ruaj khov ntawm cov kev hloov pauv uas tau hais tseg hauv peb lub xyoos dhau los. Rust 2021 tseem yuav ua lub hauv paus rau kev ua haujlwm ntxiv rau peb lub xyoos tom ntej, zoo ib yam li qhov kev tso tawm Rust 2018 los ua lub hauv paus rau kev txhim kho cov lus hauv peb lub xyoos dhau los.

Txhawm rau kom muaj kev sib raug zoo, cov neeg tsim khoom siv tau "2015", "2018" thiab "2021" cov ntawv sau rau hauv lawv cov kev pab cuam, tso cai rau cov kev pab cuam txuas nrog cov lus hauv xeev cov ntawv sib xws rau cov ntawv xaiv ntawm Rust. Cov ntawv luam tawm tau qhia kom cais cov kev hloov pauv tsis sib xws thiab tau teeb tsa hauv metadata ntawm cov pob khoom thauj los ntawm "ib tsab" teb hauv ntu "[pob]". Piv txwv li, tsab "2018" suav nrog kev ua haujlwm ruaj khov thaum kawg ntawm 2018 thiab tseem suav nrog txhua qhov kev hloov pauv ntxiv uas tsis cuam tshuam kev sib raug zoo. Tsab ntawv 2021 ntxiv nrog rau kev sib cuam tshuam-tawg cov yam ntxwv tau npaj tseg hauv 1.56 tso tawm tam sim no thiab pom zoo rau kev siv yav tom ntej. Ntxiv nrog rau cov lus nws tus kheej, cov neeg kho kuj coj mus rau hauv tus account lub xeev ntawm cov cuab yeej thiab cov ntaub ntawv.

Cov kev tsis sib haum xeeb tseem ceeb tau sau tseg hauv Rust 2021:

  • Separate Capture in Closures - Cov kaw tam sim no tuaj yeem ntes cov npe ntawm ib tus neeg tsis yog tag nrho cov cim. Piv txwv li, "|| ax + 1" yuav tsuas ntes "ax" es tsis txhob "a".
  • Lub IntoIterator zoo rau arrays: array.into_iter() tso cai rau koj mus iterate tshaj array ntsiab los ntawm qhov tseem ceeb, es tsis yog los ntawm kev siv.
  • Kev ua ntawm "|" kab lus tau hloov pauv hauv macro_rules (Boolean LOSSIS) hauv cov qauv - Tus ":pat" specifier hauv kev sib tw tam sim no hwm "A | B".
  • Tus neeg saib xyuas pob khoom suav nrog los ntawm lub neej ntawd qhov thib ob version ntawm tus neeg daws teeb meem, kev txhawb nqa uas tau tshwm sim hauv Rust 1.51.
  • Lub TryFrom, TryInto thiab FromIterator qhov zoo tau raug ntxiv rau lub prelude standard tsev qiv ntawv module.
  • Qhov kev ceeb toom! (..) thiab lees paub!(exr, ..) macros tam sim no ib txwm siv format_args! (..) los ua cov hlua, zoo ib yam li println!().
  • Cov kab lus ident #, identΒ» ..." thiab ident'...' yog tseg rau hauv cov lus syntax.
  • Tsiv bare_trait_objects thiab ellipsis_inclusive_range_patterns ceeb toom rau qhov yuam kev.

Tshiab hauv Rust 1.56:

  • Hauv Cargo.toml, nyob rau hauv seem "[pob]", qhov rust-version teb tau ntxiv, los ntawm qhov koj tuaj yeem txiav txim siab qhov tsawg kawg nkaus kev txhawb nqa ntawm Rust rau pob crate. Yog hais tias qhov tam sim no version tsis phim cov parameter uas tau teev tseg, Cargo yuav tsum tsis ua hauj lwm nrog cov lus yuam kev.
  • Thaum cov qauv sib piv siv "binding @ qauv" kab lus, kev txhawb nqa yog muab rau kev qhia txog kev khi ntxiv (piv txwv li, "cia matrix @ Matrix { row_len, .. } = get_matrix();").
  • Ib feem tshiab ntawm API tau raug hloov mus rau qeb ntawm qhov ruaj khov, suav nrog cov txheej txheem thiab kev siv ntawm cov yam ntxwv tau ruaj khov:
    • std::os::unix::fs::chroot
    • UnsafeCell::raw_get
    • BufWriter::into_parts
    • core::panic::{UnwindSafe, RefUnwindSafe, AssertUnwindSafe}
    • Vec::shrink_to
    • Txoj hlua::shrink_to
    • OsString::shrink_to
    • PathBuf::shrink_to
    • BinaryHeap::shrink_to
    • VecDeque::shrink_to
    • HashMap::shrink_to
    • HashSet::shrink_to
  • Tus cwj pwm "const", uas txiav txim siab qhov ua tau ntawm kev siv nyob rau hauv ib qho ntsiab lus es tsis txhob tas mus li, yog siv hauv kev ua haujlwm.
    • std ::mem ::transmute
    • [T]:: ua ntej
    • [T]::split_first
    • [T]:: xeem
    • [T]::split_last
  • Lub compiler tau hloov mus siv LLVM version 13.
  • Ib qib thib ob ntawm kev txhawb nqa tau ua tiav rau aarch64-apple-ios-sim platform thiab qib thib peb rau powerpc-unknown-freebsd thiab riscv32imc-esp-espidf platforms. Qib thib peb suav nrog kev txhawb nqa yooj yim, tab sis tsis muaj kev sim automated, tshaj tawm kev tsim kho, lossis tshawb xyuas seb qhov chaws puas tuaj yeem tsim.

Nco qab tias Rust tsom ntsoov rau kev ruaj ntseg nco, muab kev tswj hwm kev nco tsis siv neeg, thiab muab txoj hauv kev kom ua tiav siab sib luag hauv kev ua tiav txoj haujlwm yam tsis tas siv cov khoom khib nyiab lossis lub sijhawm ua haujlwm (runtime txo qis rau kev pib pib thiab kev saib xyuas ntawm lub tsev qiv ntawv txheem).

Rust txoj kev tswj hwm tsis siv neeg lub cim xeeb txuag tus tsim tawm los ntawm kev ua yuam kev thaum tswj cov taw qhia thiab tiv thaiv cov teeb meem uas tshwm sim vim kev tswj hwm kev nco qis, xws li nkag mus rau thaj chaw nco tom qab nws tau tso tawm, dereferencing null pointers, tsis overruns, thiab lwm yam. Txhawm rau faib cov tsev qiv ntawv, muab kev tsim kho thiab tswj hwm kev vam khom, qhov project tsim tus thawj tswj hwm pob khoom. Lub crates.io repository yog txaus siab rau hosting cov tsev qiv ntawv.

Tau qhov twg los: opennet.ru

Ntxiv ib saib