Appendix B: Operators and Symbols

Este apéndice incluye un glosario de la sintaxis de Cairo.

Operators

La Tabla B-1 contiene los operadores en Cairo, un ejemplo de cómo aparecería el operador en contexto, una breve explicación y si el operador es sobrecargable. Si un operador es sobrecargable, se lista el trait relevante a usar para sobrecargar ese operador.

Table B-1: Operators

OperatorExampleExplanationOverloadable?
!!exprBitwise or logical complementNot
!=expr != exprNon-equality comparisonPartialEq
%expr % exprArithmetic remainderRem
%=var %= exprArithmetic remainder and assignmentRemEq
&expr & exprBitwise ANDBitAnd
&&expr && exprShort-circuiting logical AND
*expr * exprArithmetic multiplicationMul
*=var *= exprArithmetic multiplication and assignmentMulEq
@@varSnapshot
**varDesnap
+expr + exprArithmetic additionAdd
+=var += exprArithmetic addition and assignmentAddEq
,expr, exprArgument and element separator
--exprArithmetic negationNeg
-expr - exprArithmetic subtractionSub
-=var -= exprArithmetic subtraction and assignmentSubEq
->fn(...) -> type, |...| -> typeFunction and closure return type
.expr.identMember access
/expr / exprArithmetic divisionDiv
/=var /= exprArithmetic division and assignmentDivEq
:pat: type, ident: typeConstraints
:ident: exprStruct field initializer
;expr;Statement and item terminator
<expr < exprLess than comparisonPartialOrd
<=expr <= exprLess than or equal to comparisonPartialOrd
=var = exprAssignment
==expr == exprEquality comparisonPartialEq
=>pat => exprPart of match arm syntax
>expr > exprGreater than comparisonPartialOrd
>=expr >= exprGreater than or equal to comparisonPartialOrd
^expr ^ exprBitwise exclusive ORBitXor
|expr | exprBitwise ORBitOr
||expr || exprShort-circuiting logical OR

Non Operator Symbols

La siguiente lista contiene todos los símbolos que no se utilizan como operadores; es decir, no tienen el mismo comportamiento que una llamada a una función o método.

La Tabla B-2 muestra símbolos que aparecen solos y son válidos en diversas ubicaciones.

Table B-2: Stand-Alone Syntax

SymbolExplanation
..._u8, ..._usize, etc.Numeric literal of specific type
'...'Short string
_“Ignored” pattern binding; also used to make integer literals readable

La Tabla B-3 muestra los símbolos que se utilizan en el contexto de una ruta de jerarquía de módulos para acceder a un elemento.

Table B-3: Path-Related Syntax

SymbolExplanation
ident::identNamespace path
super::pathPath relative to the parent of the current module
trait::method(...)Disambiguating a method call by naming the trait that defines it

La Tabla B-4 muestra los símbolos que aparecen en el contexto del uso de parámetros de tipo genérico.

Table B-4: Generics

SymbolExplanation
path<...>Specifies parameters to generic type in a type (e.g., Vec<u8>)
path::<...>, method::<...>Specifies parameters to generic type, function, or method in an expression; often referred to as turbofish
fn ident<...> ...Define generic function
struct ident<...> ...Define generic structure
enum ident<...> ...Define generic enumeration
impl<...> ...Define generic implementation

La Tabla B-5 muestra los símbolos que aparecen en el contexto de la llamada o definición de macros y la especificación de atributos en un elemento.

Table B-5: Macros and Attributes

SymbolExplanation
#[meta]Outer attribute

La Tabla B-6 muestra los símbolos que crean comentarios.

Table B-6: Comments

SymbolExplanation
//Line comment

La Tabla B-7 muestra los símbolos que aparecen en el contexto del uso de tuplas.

Table B-7: Tuples

SymbolExplanation
()Empty tuple (aka unit), both literal and type
(expr)Parenthesized expression
(expr,)Single-element tuple expression
(type,)Single-element tuple type
(expr, ...)Tuple expression
(type, ...)Tuple type
expr(expr, ...)Function call expression; also used to initialize tuple structs and tuple enum variants

La Tabla B-8 muestra los contextos en los que se utilizan los corchetes.

Table B-8: Curly Brackets

ContextExplanation
{...}Block expression
Type {...}struct literal
Last change: 2023-07-20, commit: e127cf5