Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Liite B: Operaattorit ja symbolit

Tämä liite sisältää Rustin syntaksin sanaston, mukaan lukien operaattorit ja muut symbolit, jotka esiintyvät yksinään tai polkujen, geneeristen tyyppien, trait-rajojen, makrojen, attribuuttien, kommenttien, tuplejen ja hakasulkeiden yhteydessä.

Operaattorit

Taulukko B-1 sisältää Rustin operaattorit, esimerkin siitä, miltä operaattori näyttäisi kontekstissa, lyhyen selityksen ja tiedon siitä, onko operaattori ylikuormitettavissa. Jos operaattori on ylikuormitettavissa, luettelossa on myös siihen liittyvä trait, jota käytetään operaattorin ylikuormittamiseen.

Taulukko B-1: Operaattorit

OperatorExampleExplanationOverloadable?
!ident!(...), ident!{...}, ident![...]Makron laajennus
!!exprBittinen tai looginen komplementtiNot
!=expr != exprEriarvoisuusvertailuPartialEq
%expr % exprJakojäännösRem
%=var %= exprJakojäännös ja sijoitusRemAssign
&&expr, &mut exprLainaaminen
&&type, &mut type, &'a type, &'a mut typeLainatun osoittimen tyyppi
&expr & exprBittinen JABitAnd
&=var &= exprBittinen JA ja sijoitusBitAndAssign
&&expr && exprOikosulkeva looginen JA
*expr * exprKertolaskuMul
*=var *= exprKertolasku ja sijoitusMulAssign
**exprDereferenssiDeref
**const type, *mut typeRaaka osoitin
+trait + trait, 'a + traitYhdistetty tyyppirajoite
+expr + exprYhteenlaskuAdd
+=var += exprYhteenlasku ja sijoitusAddAssign
,expr, exprArgumenttien ja elementtien erotin
-- exprAritmeettinen negaatioNeg
-expr - exprVähennyslaskuSub
-=var -= exprVähennyslasku ja sijoitusSubAssign
->fn(...) -> type, |…| -> typeFunktion ja sulkeuman paluuarvon tyyppi
.expr.identKentän käyttö
.expr.ident(expr, ...)Metodikutsu
.expr.0, expr.1, and so onTuplen indeksointi
...., expr.., ..expr, expr..exprOikealta avoin väli-literaaliPartialOrd
..=..=expr, expr..=exprOikealta suljettu väli-literaaliPartialOrd
....exprRakenneliteraalin päivityssyntaksi
..variant(x, ..), struct_type { x, .. }”Ja loput” -kuviosidonta
...expr...expr(Vanhentunut, käytä ..= sijaan) Kuviossa: suljettu välikuvio
/expr / exprJakolaskuDiv
/=var /= exprJakolasku ja sijoitusDivAssign
:pat: type, ident: typeRajoitteet
:ident: exprRakennekentän alustus
:'a: loop {...}Silmukan label
;expr;Lauseen ja kohteen pääte
;[...; len]Osa kiinteäkokoista taulukkosyntaksia
<<expr << exprSiirto vasemmalleShl
<<=var <<= exprSiirto vasemmalle ja sijoitusShlAssign
<expr < exprPienempi kuin -vertailuPartialOrd
<=expr <= exprPienempi tai yhtä suuri kuin -vertailuPartialOrd
=var = expr, ident = typeSijoitus/ekvivalenssi
==expr == exprYhtäsuuruusvertailuPartialEq
=>pat => exprOsa match-haaran syntaksia
>expr > exprSuurempi kuin -vertailuPartialOrd
>=expr >= exprSuurempi tai yhtä suuri kuin -vertailuPartialOrd
>>expr >> exprSiirto oikealleShr
>>=var >>= exprSiirto oikealle ja sijoitusShrAssign
@ident @ patKuviosidonta
^expr ^ exprBittinen eksklusiivinen TAIBitXor
^=var ^= exprBittinen eksklusiivinen TAI ja sijoitusBitXorAssign
|pat | patKuviovaihtoehdot
|expr | exprBittinen TAIBitOr
|=var |= exprBittinen TAI ja sijoitusBitOrAssign
||expr || exprOikosulkeva looginen TAI
?expr?Virheen propagointi

Muut kuin operaattorisymbolit

Seuraavissa taulukoissa on kaikki symbolit, jotka eivät toimi operaattoreina; toisin sanoen ne eivät käyttäydy kuten funktio- tai metodikutsu.

Taulukko B-2 näyttää symbolit, jotka esiintyvät yksinään ja ovat kelvollisia monissa eri paikoissa.

Taulukko B-2: Itsenäinen syntaksi

SymbolExplanation
'identNimetty elinikä tai silmukan label
Digits immediately followed by u8, i32, f64, usize, and so onTietyn tyypin numeerinen literaali
"..."Merkkijonoliteraali
r"...", r#"..."#, r##"..."##, and so onRaaka merkkijonoliteraali; escape-merkkejä ei käsitellä
b"..."Tavumerkkijonoliteraali; muodostaa tavutaulukon merkkijonon sijaan
br"...", br#"..."#, br##"..."##, and so onRaaka tavumerkkijonoliteraali; raa’an ja tavumerkkijonoliteraalin yhdistelmä
'...'Merkkiliteraali
b'...'ASCII-tavuliteraali
|…| exprSulkeuma
!Aina tyhjä pohjatyyppi divergoiville funktioille
_”Ohitettu” kuviosidonta; käytetään myös kokonaislukuliteraalien luettavuuteen

Taulukko B-3 näyttää symbolit, jotka esiintyvät polun yhteydessä moduulihierarkian kautta kohteeseen.

Taulukko B-3: Polkuun liittyvä syntaksi

SymbolExplanation
ident::identNimiavaruuspolku
::pathPolku suhteessa paketin juureen (eli eksplisiittisesti absoluuttinen polku)
self::pathPolku suhteessa nykyiseen moduuliin (eli eksplisiittisesti suhteellinen polku)
super::pathPolku suhteessa nykyisen moduulin ylämoduuliin
type::ident, <type as trait>::identAssosioituneet vakiot, funktiot ja tyypit
<type>::...Assosioitu kohde tyypille, jota ei voi nimetä suoraan (esimerkiksi <&T>::..., <[T]>::..., and so on)
trait::method(...)Metodikutsun poistaminen moniselitteisyydestä nimeämällä sen määrittävä trait
type::method(...)Metodikutsun poistaminen moniselitteisyydestä nimeämällä tyyppi, jolle se on määritelty
<type as trait>::method(...)Metodikutsun poistaminen moniselitteisyydestä nimeämällä trait ja tyyppi

Taulukko B-4 näyttää symbolit, jotka esiintyvät geneeristen tyyppiparametrien käytön yhteydessä.

Taulukko B-4: Geneeriset tyypit

SymbolExplanation
path<...>Määrittää parametrit geneeriselle tyypille tyypissä (esimerkiksi Vec<u8>)
path::<...>, method::<...>Määrittää parametrit geneeriselle tyypille, funktiolle tai metodille lausekkeessa; usein kutsutaan turbofishiksi (esimerkiksi "42".parse::<i32>())
fn ident<...> ...Määrittele geneerinen funktio
struct ident<...> ...Määrittele geneerinen rakenne
enum ident<...> ...Määrittele geneerinen luettelo
impl<...> ...Määrittele geneerinen toteutus
for<...> typeKorkeamman asteen elinkaarirajat
type<ident=type>Geneerinen tyyppi, jossa yhdellä tai useammalla assosioituneella tyypillä on tietyt sijoitukset (esimerkiksi Iterator<Item=T>)

Taulukko B-5 näyttää symbolit, jotka esiintyvät geneeristen tyyppiparametrien rajoittamisen yhteydessä trait-rajoilla.

Taulukko B-5: Trait-rajoitteet

SymbolExplanation
T: UGeneerinen parametri T rajoitettu tyyppeihin, jotka toteuttavat U-traitin
T: 'aGeneerisen tyypin T täytyy elää eliniän 'a yli (eli tyyppi ei voi transitiivisesti sisältää viitteitä, joiden elinikä on lyhyempi kuin 'a)
T: 'staticGeneerinen tyyppi T ei sisällä lainattuja viitteitä muita kuin 'static-viitteitä
'b: 'aGeneerisen eliniän 'b täytyy elää eliniän 'a yli
T: ?SizedSalli geneerisen tyyppiparametrin olla dynaamisesti mitoitettu tyyppi
'a + trait, trait + traitYhdistetty tyyppirajoite

Taulukko B-6 näyttää symbolit, jotka esiintyvät makrojen kutsumisen tai määrittelyn sekä kohteelle määritettyjen attribuuttien yhteydessä.

Taulukko B-6: Makrot ja attribuutit

SymbolExplanation
#[meta]Ulompi attribuutti
#![meta]Sisempi attribuutti
$identMakron substituutio
$ident:kindMakron metamuuttuja
$(...)...Makron toisto
ident!(...), ident!{...}, ident![...]Makrokutsu

Taulukko B-7 näyttää symbolit, joilla luodaan kommentteja.

Taulukko B-7: Kommentit

SymbolExplanation
//Rivikommentti
//!Sisempi rividokumentaatiokommentti
///Ulompi rividokumentaatiokommentti
/*...*/Lohkokommentti
/*!...*/Sisempi lohkodokumentaatiokommentti
/**...*/Ulompi lohkodokumentaatiokommentti

Taulukko B-8 näyttää kontekstit, joissa kaarisulkeita käytetään.

Taulukko B-8: Kaarisulkeet

SymbolExplanation
()Tyhjä tuple (eli unit), sekä literaali että tyyppi
(expr)Sulkeistettu lauseke
(expr,)Yksielementtinen tuple-lauseke
(type,)Yksielementtinen tuple-tyyppi
(expr, ...)Tuple-lauseke
(type, ...)Tuple-tyyppi
expr(expr, ...)Funktiokutsulauseke; käytetään myös tuple-struct- ja tuple-enum-varianttien alustamiseen

Taulukko B-9 näyttää kontekstit, joissa aaltosulkeita käytetään.

Taulukko B-9: Aaltosulkeet

ContextExplanation
{...}Lohkolauseke
Type {...}Rakenneliteraali

Taulukko B-10 näyttää kontekstit, joissa hakasulkeita käytetään.

Taulukko B-10: Hakasulkeet

ContextExplanation
[...]Taulukkoliteraali
[expr; len]Taulukkoliteraali, joka sisältää len kappaletta expr-lauseketta
[type; len]Taulukkotyyppi, joka sisältää len kappaletta type-tyyppiä
expr[expr]Kokoelman indeksointi; ylikuormitettavissa (Index, IndexMut)
expr[..], expr[a..], expr[..b], expr[a..b]Kokoelman indeksointi, joka esittää kokoelman viipalointia käyttäen Range-, RangeFrom-, RangeTo- tai RangeFull-tyyppiä ”indeksinä”