<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://abax.io/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lochi</id>
	<title>El Mago del Rust - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://abax.io/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lochi"/>
	<link rel="alternate" type="text/html" href="https://abax.io/index.php/Special:Contributions/Lochi"/>
	<updated>2026-04-17T15:17:51Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.36.1</generator>
	<entry>
		<id>https://abax.io/index.php?title=Tipos_de_datos&amp;diff=145</id>
		<title>Tipos de datos</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Tipos_de_datos&amp;diff=145"/>
		<updated>2021-03-10T03:47:45Z</updated>

		<summary type="html">&lt;p&gt;Lochi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Todo valor en Rust es de un tipo específico. Rust necesita saber ese tipo al momento de compilar el programa, y muchas veces puede inferir el tipo. En otras ocasiones debemos indicarlo explícitamente, y si no lo hacemos produciremos un [[Errores_de_compilación#Errores_en_el_uso_de_las_variables|error]] de compilación.&lt;br /&gt;
&lt;br /&gt;
Hay dos categorías:&lt;br /&gt;
==Escalares==&lt;br /&gt;
Un tipo escalar representa un valor único, y existen cuatro tipos escalares: enteros, punto flotantes, booleanos, y caracteres. &lt;br /&gt;
===Enteros===&lt;br /&gt;
Un entero es un número sin una parte fraccional. Pueden tener signo o no, y ser de 8 a 128 bits. Si tiene signos, el tipo empieza con i y si no tiene signo empieza con u.&lt;br /&gt;
&lt;br /&gt;
====Tamaños y signo====&lt;br /&gt;
El tipo empieza con i y u, y continúa con el tamaño en bits, desde 8 hasta 128 bits: i8, u8, i16, u16, y así sucesivamente hasta i128 y u128.&lt;br /&gt;
&lt;br /&gt;
Se usa [[complemento a dos]] para representar los números negativos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Punto flotante===&lt;br /&gt;
Hay dos tipos primitivos de [[punto flotante]]: f32 (32 bits, precisión simple) y f64 (64 bits, doble precisión). Si no se especifica el tipo, se asume por defecto que es f64. Se usa el estándar [[IEEE-754]] de punto flotante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
    let pi = 3.14; // se asume tipo f64&lt;br /&gt;
    let as: f32 = 3.14; // esta variable es de tipo f32&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Booleanos===&lt;br /&gt;
Una variable booleana puede ser o &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; o &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;, y ocupa un byte de almacenamiento.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
    let bandera = true;&lt;br /&gt;
    let otra_bandera: bool = false;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
===Caracteres===&lt;br /&gt;
Para almacenar letras, se puede usar &amp;lt;code&amp;gt;char&amp;lt;/code&amp;gt;, y se define con comilla única (no doble comilla o comillas que son para las cadenas de caracteres). Los caracteres ocupan 4 bytes de almacenamiento.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
    let p = 'p';&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compuestos==&lt;br /&gt;
Los tipos compuestos agrupan varios valores en un sólo tipo. Existen dos: tuples y arreglos.&lt;br /&gt;
===Tuples===&lt;br /&gt;
Agrupan diferentes tipos en un sólo tipo compuesto. Tienen un tamaño definido: no se pueden modificar de tamaño una vez creados.&lt;br /&gt;
&lt;br /&gt;
Se crean usando paréntesis y separando la lista de valores con comas. Cada posición es un tipo, y no necesitan ser iguales.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
     let tuple: (i32, char) = (12,'d');&lt;br /&gt;
     println!(&amp;quot;El valor es {}&amp;quot;,tuple.1);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La salida del programa sería &amp;lt;code&amp;gt;d&amp;lt;/code&amp;gt;. (&amp;lt;code&amp;gt;tuple.0&amp;lt;/code&amp;gt; se refiere al i32, y &amp;lt;code&amp;gt;tuple.1&amp;lt;/code&amp;gt; al caracter).&lt;br /&gt;
&lt;br /&gt;
Otra forma es asignar parte de ese tuple a una variable, de la siguiente manera:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
     let tuple: (i32, char) = (12,'d');&lt;br /&gt;
     let (a,b)=tuple;&lt;br /&gt;
     println!(&amp;quot;El valor es {}&amp;quot;,b);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Arreglos===&lt;br /&gt;
En los arreglos, todos los valores deben ser del mismo tipo, y deben tener un tamaño fijo. En este ejemplo, el arreglo a tiene 3 valores:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
    let a = [0,1,2];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los arreglos se definen estáticamente, por lo que están en el [[Stack|stack]] y no en el [[Heap|heap]]. Si se desea algo dinámico, se puede usar un &amp;lt;code&amp;gt;vector&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Si se desea explicitar el tipo y el número de elemento se haría:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
    let a: [i32;3] = [0,1,2];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si quieres inicializar todo un arreglo con un mismo valor puedes hacer esto:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
    let a = [5;10]; //esto inicializa con 10 elementos con un valor de 5.&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los elementos de un arreglo se accesan de la misma forma que en otros lenguajes: &amp;lt;code&amp;gt;a[0]&amp;lt;/code&amp;gt; accesa su primer elemento, y así sucesivamente.&lt;br /&gt;
&lt;br /&gt;
====Arreglos bidimensionales====&lt;br /&gt;
Se pueden definir explícitamente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
     let mut state = [[0,0],[0,1]];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También se pueden definir de esta forma, un arreglo de 8 por 16:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
    let mut arreglo: [[i32; 16]; 8];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==String==&lt;br /&gt;
Un String está localizado en el [[Heap|heap]] y no en el [[Stack|stack]], por lo que puede cambiar de tamaño durante la ejecución del programa. Se crea de la siguiente  forma:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
let s = String::from(&amp;quot;hola&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y se puede extender si le hacemos un push:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main() {&lt;br /&gt;
    let mut s = String::from(&amp;quot;hola&amp;quot;);&lt;br /&gt;
    s.push_str(&amp;quot;, ¿cómo te va?&amp;quot;); &lt;br /&gt;
    println!(&amp;quot;{}&amp;quot;, s); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Este programa creará el String y le agregará al final el mensaje &amp;quot;, ¿cómo te va?&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Control_de_flujo_de_ejecuci%C3%B3n&amp;diff=144</id>
		<title>Control de flujo de ejecución</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Control_de_flujo_de_ejecuci%C3%B3n&amp;diff=144"/>
		<updated>2021-03-09T03:43:30Z</updated>

		<summary type="html">&lt;p&gt;Lochi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Las dos estructuras más importantes para el control del flujo de ejecución son los lazos y la expresión &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
=Expresiones &amp;lt;code&amp;gt;if/else&amp;lt;/code&amp;gt;=&lt;br /&gt;
Muy similar a otros lenguajes, se evalúa si es falso o verdadero una expresión. En este caso se evalúa si una variable es menor a 10 o no:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     if a &amp;lt; 10 {&lt;br /&gt;
         println!(&amp;quot;la expresión es verdadera&amp;quot;);&lt;br /&gt;
     }else {&lt;br /&gt;
         println!(&amp;quot;la exprexión es false&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La expresión a evaluar debe ser de tipo &amp;lt;code&amp;gt;bool&amp;lt;/code&amp;gt;, de lo contrario producirá un [[Errores_de_compilación#Errores_en_el_uso_de_las_variables|error 308]]. Sobre comparaciones entre variables, se puede ver [[Comparaciones|acá]]&lt;br /&gt;
&lt;br /&gt;
El &amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt; es opcional, y se pueden colocar varias expresiones &amp;lt;code&amp;gt;if/else&amp;lt;/code&amp;gt; en cascada:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     if a == 10 {&lt;br /&gt;
         println!(&amp;quot;la variable es 10&amp;quot;);&lt;br /&gt;
     }else if a == 4 {&lt;br /&gt;
         println!(&amp;quot;la variable es 4&amp;quot;);&lt;br /&gt;
     }else if a == 7 {&lt;br /&gt;
         println!(&amp;quot;la variable es 7&amp;quot;);&lt;br /&gt;
     }else {&lt;br /&gt;
         println!(&amp;quot;la variable no es ni 10, 4 ni 7&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si debes poner muchos &amp;lt;code&amp;gt;if/else&amp;lt;/code&amp;gt; en cascada, lo mejor sería usar un [[#Match]].&lt;br /&gt;
&lt;br /&gt;
==Usando en &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt;==&lt;br /&gt;
Como el &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt; es una expresión, se puede utilizar en el lado derecho de un &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     let b = 7;&lt;br /&gt;
     let c = if a&amp;gt;b {3} else {1};&lt;br /&gt;
     println!(&amp;quot;El valor es {}&amp;quot;,c);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al ejecutar este programa, la salida sería &amp;quot;1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=Lazos con &amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt;=&lt;br /&gt;
El comando &amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt; causa que un bloque de código se repita infinitas veces a menos de que explícitamente se le ordene que termine. Este código nunca terminará:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     loop {&lt;br /&gt;
         println!(&amp;quot;hola&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La única forma de que deje de imprimir &amp;quot;hola&amp;quot; es usando Control-C.&lt;br /&gt;
&lt;br /&gt;
==Saliendo de un lazo con &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt;==&lt;br /&gt;
Con &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt; la iteración termina y se sale del lazo.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let mut a=0;&lt;br /&gt;
     loop {&lt;br /&gt;
         a=a+1;&lt;br /&gt;
         println!(&amp;quot;{}&amp;quot;,a);&lt;br /&gt;
         if a == 100 {break;}&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este programa, al llegar la impresión a 100, terminará el programa.&lt;br /&gt;
&lt;br /&gt;
==Devolviendo un valor==&lt;br /&gt;
&amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt; ejecuta una expresión varias veces y se puede utilizar el &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt; para devolver un valor, por ejemplo en una asignación:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let mut a =0;&lt;br /&gt;
     let b= loop {&lt;br /&gt;
         a=a+1;&lt;br /&gt;
         if a == 100 {&lt;br /&gt;
             break a;&lt;br /&gt;
        }&lt;br /&gt;
     };&lt;br /&gt;
     println!(&amp;quot;{}&amp;quot;,b);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Lazos condicionales con &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;=&lt;br /&gt;
Una forma de tener un lazo con un condicional es usar &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;. El programa anterior modificado sería:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let mut a =0;&lt;br /&gt;
     while a != 100 {&lt;br /&gt;
         a=a+1;&lt;br /&gt;
     }&lt;br /&gt;
     println!(&amp;quot;{}&amp;quot;,a);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Lazos con &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt;=&lt;br /&gt;
Hay varias formas de usar &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; para crear un lazo con un iterador.&lt;br /&gt;
&lt;br /&gt;
==Iterador con &amp;lt;code&amp;gt;..&amp;lt;/code&amp;gt;==&lt;br /&gt;
Con un iterador &amp;lt;code&amp;gt;a..b&amp;lt;/code&amp;gt;, los valores van desde a inclusive hasta b (excluyendolo):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     for a in 1..10 {&lt;br /&gt;
        println!(&amp;quot;{}&amp;quot;,a);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
En este ejemplo, se imprimirán los valores desde 1 hasta 9. En este caso la variable &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; no necesita ser declarada explícitamente antes.&lt;br /&gt;
&lt;br /&gt;
Si quisiéramos que el iterador fuera desde a hasta b inclusive, podemos poner un &amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt; antes de la segunda variable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     for a in 1..=10 {&lt;br /&gt;
        println!(&amp;quot;{}&amp;quot;,a);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Iteradores==&lt;br /&gt;
Hay varios iteradores: &amp;lt;code&amp;gt;into_iter&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;iter&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;iter_mut&amp;lt;/code&amp;gt;.&lt;br /&gt;
===&amp;lt;code&amp;gt;iter&amp;lt;/code&amp;gt;===&lt;br /&gt;
Toma cada elemento de la colección para cada iteración.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = [0,1,2];&lt;br /&gt;
     for x in a.iter() {&lt;br /&gt;
        println!(&amp;quot;{}&amp;quot;,x);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
En este ejemplo, se imprime los números 0,1,2.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;iter_iter&amp;lt;/code&amp;gt;===&lt;br /&gt;
Toma cada elemento de la colección y lo saca de la misma. Al final del for, la colección estará vacía.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;iter_mut&amp;lt;/code&amp;gt;===&lt;br /&gt;
Toma cada elemento, permitiendo su modificación.&lt;br /&gt;
&lt;br /&gt;
=Match=&lt;br /&gt;
&amp;lt;code&amp;gt;Match&amp;lt;/code&amp;gt; permite encontrar patrones, que se pueden usar como un &amp;lt;code&amp;gt;switch&amp;lt;/code&amp;gt; en el lenguaje C:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main() {&lt;br /&gt;
    let a=5;&lt;br /&gt;
&lt;br /&gt;
    match a {&lt;br /&gt;
        1 =&amp;gt; println!(&amp;quot;uno&amp;quot;),&lt;br /&gt;
        2 | 3 | 5 | 7 =&amp;gt; println!(&amp;quot;es un número primo&amp;quot;),&lt;br /&gt;
        _ =&amp;gt; println! (&amp;quot;cualquier otro número&amp;quot;),&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cada opción está separada por una coma, y se usa | para considerar varias opciones a la vez.&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Control_de_flujo_de_ejecuci%C3%B3n&amp;diff=143</id>
		<title>Control de flujo de ejecución</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Control_de_flujo_de_ejecuci%C3%B3n&amp;diff=143"/>
		<updated>2021-03-09T03:42:14Z</updated>

		<summary type="html">&lt;p&gt;Lochi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Las dos estructuras más importantes para el control del flujo de ejecución son los lazos y la expresión &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
=Expresiones &amp;lt;code&amp;gt;if/else&amp;lt;/code&amp;gt;=&lt;br /&gt;
Muy similar a otros lenguajes, se evalúa si es falso o verdadero una expresión. En este caso se evalúa si una variable es menor a 10 o no:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     if a &amp;lt; 10 {&lt;br /&gt;
         println!(&amp;quot;la expresión es verdadera&amp;quot;);&lt;br /&gt;
     }else {&lt;br /&gt;
         println!(&amp;quot;la exprexión es false&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La expresión a evaluar debe ser de tipo &amp;lt;code&amp;gt;bool&amp;lt;/code&amp;gt;, de lo contrario producirá un [[Errores_de_compilación#Errores_en_el_uso_de_las_variables|error 308]]. Sobre comparaciones entre variables, se puede ver [[Comparaciones|acá]]&lt;br /&gt;
&lt;br /&gt;
El &amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt; es opcional, y se pueden colocar varias expresiones &amp;lt;code&amp;gt;if/else&amp;lt;/code&amp;gt; en cascada:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     if a == 10 {&lt;br /&gt;
         println!(&amp;quot;la variable es 10&amp;quot;);&lt;br /&gt;
     }else if a == 4 {&lt;br /&gt;
         println!(&amp;quot;la variable es 4&amp;quot;);&lt;br /&gt;
     }else if a == 7 {&lt;br /&gt;
         println!(&amp;quot;la variable es 7&amp;quot;);&lt;br /&gt;
     }else {&lt;br /&gt;
         println!(&amp;quot;la variable no es ni 10, 4 ni 7&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si debes poner muchos &amp;lt;code&amp;gt;if/else&amp;lt;/code&amp;gt; en cascada, lo mejor sería usar un [[#match]].&lt;br /&gt;
&lt;br /&gt;
==Usando en &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt;==&lt;br /&gt;
Como el &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt; es una expresión, se puede utilizar en el lado derecho de un &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     let b = 7;&lt;br /&gt;
     let c = if a&amp;gt;b {3} else {1};&lt;br /&gt;
     println!(&amp;quot;El valor es {}&amp;quot;,c);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al ejecutar este programa, la salida sería &amp;quot;1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=Lazos con &amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt;=&lt;br /&gt;
El comando &amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt; causa que un bloque de código se repita infinitas veces a menos de que explícitamente se le ordene que termine. Este código nunca terminará:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     loop {&lt;br /&gt;
         println!(&amp;quot;hola&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La única forma de que deje de imprimir &amp;quot;hola&amp;quot; es usando Control-C.&lt;br /&gt;
&lt;br /&gt;
==Saliendo de un lazo con &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt;==&lt;br /&gt;
Con &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt; la iteración termina y se sale del lazo.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let mut a=0;&lt;br /&gt;
     loop {&lt;br /&gt;
         a=a+1;&lt;br /&gt;
         println!(&amp;quot;{}&amp;quot;,a);&lt;br /&gt;
         if a == 100 {break;}&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este programa, al llegar la impresión a 100, terminará el programa.&lt;br /&gt;
&lt;br /&gt;
==Devolviendo un valor==&lt;br /&gt;
&amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt; ejecuta una expresión varias veces y se puede utilizar el &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt; para devolver un valor, por ejemplo en una asignación:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let mut a =0;&lt;br /&gt;
     let b= loop {&lt;br /&gt;
         a=a+1;&lt;br /&gt;
         if a == 100 {&lt;br /&gt;
             break a;&lt;br /&gt;
        }&lt;br /&gt;
     };&lt;br /&gt;
     println!(&amp;quot;{}&amp;quot;,b);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Lazos condicionales con &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;=&lt;br /&gt;
Una forma de tener un lazo con un condicional es usar &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;. El programa anterior modificado sería:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let mut a =0;&lt;br /&gt;
     while a != 100 {&lt;br /&gt;
         a=a+1;&lt;br /&gt;
     }&lt;br /&gt;
     println!(&amp;quot;{}&amp;quot;,a);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Lazos con &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt;=&lt;br /&gt;
Hay varias formas de usar &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; para crear un lazo con un iterador.&lt;br /&gt;
&lt;br /&gt;
==Iterador con &amp;lt;code&amp;gt;..&amp;lt;/code&amp;gt;==&lt;br /&gt;
Con un iterador &amp;lt;code&amp;gt;a..b&amp;lt;/code&amp;gt;, los valores van desde a inclusive hasta b (excluyendolo):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     for a in 1..10 {&lt;br /&gt;
        println!(&amp;quot;{}&amp;quot;,a);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
En este ejemplo, se imprimirán los valores desde 1 hasta 9. En este caso la variable &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; no necesita ser declarada explícitamente antes.&lt;br /&gt;
&lt;br /&gt;
Si quisiéramos que el iterador fuera desde a hasta b inclusive, podemos poner un &amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt; antes de la segunda variable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     for a in 1..=10 {&lt;br /&gt;
        println!(&amp;quot;{}&amp;quot;,a);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Iteradores==&lt;br /&gt;
Hay varios iteradores: &amp;lt;code&amp;gt;into_iter&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;iter&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;iter_mut&amp;lt;/code&amp;gt;.&lt;br /&gt;
===&amp;lt;code&amp;gt;iter&amp;lt;/code&amp;gt;===&lt;br /&gt;
Toma cada elemento de la colección para cada iteración.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = [0,1,2];&lt;br /&gt;
     for x in a.iter() {&lt;br /&gt;
        println!(&amp;quot;{}&amp;quot;,x);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
En este ejemplo, se imprime los números 0,1,2.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;iter_iter&amp;lt;/code&amp;gt;===&lt;br /&gt;
Toma cada elemento de la colección y lo saca de la misma. Al final del for, la colección estará vacía.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;iter_mut&amp;lt;/code&amp;gt;===&lt;br /&gt;
Toma cada elemento, permitiendo su modificación.&lt;br /&gt;
&lt;br /&gt;
=Match=&lt;br /&gt;
&amp;lt;code&amp;gt;Match&amp;lt;/code&amp;gt; permite encontrar patrones, que se pueden usar como un &amp;lt;code&amp;gt;switch&amp;lt;/code&amp;gt; en el lenguaje C:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main() {&lt;br /&gt;
    let a=5;&lt;br /&gt;
&lt;br /&gt;
    match a {&lt;br /&gt;
        1 =&amp;gt; println!(&amp;quot;uno&amp;quot;),&lt;br /&gt;
        2 | 3 | 5 | 7 =&amp;gt; println!(&amp;quot;es un número primo&amp;quot;),&lt;br /&gt;
        _ =&amp;gt; println! (&amp;quot;cualquier otro número&amp;quot;),&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cada opción está separada por una coma, y se usa | para considerar varias opciones a la vez.&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Ownership_-_Pertenencia&amp;diff=142</id>
		<title>Ownership - Pertenencia</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Ownership_-_Pertenencia&amp;diff=142"/>
		<updated>2021-03-09T03:40:26Z</updated>

		<summary type="html">&lt;p&gt;Lochi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;El Ownership o pertenencia es un concepto central en Rust y facilita el manejo de memoria, a diferencia de otros lenguajes que requieren un manejo más consciente de la memoria (y de su liberación con los recolectores de basura).&lt;br /&gt;
&lt;br /&gt;
=Reglas del ownership=&lt;br /&gt;
#Cada valor en Rust tiene una variable que se llama su ''owner'' o propietario.&lt;br /&gt;
#Solamente puede existir un propietario en un momento determinado.&lt;br /&gt;
#Cuando el propietario sale del ámbito, el valor de borra.&lt;br /&gt;
&lt;br /&gt;
=Ámbito de las variables=&lt;br /&gt;
El ámbito es el rango dentro de un programa en donde el item es válido. Por ejemplo, la variable &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; tiene su valor válido dentro del ámbito definido por las llaves:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    let a = &amp;quot;hola&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    //todo este es el ámbito de a&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Ownership_-_Pertenencia&amp;diff=141</id>
		<title>Ownership - Pertenencia</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Ownership_-_Pertenencia&amp;diff=141"/>
		<updated>2021-03-09T03:38:20Z</updated>

		<summary type="html">&lt;p&gt;Lochi: /* Reglas del ownership */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;El Ownership o pertenencia es un concepto central en Rust y facilita el manejo de memoria, a diferencia de otros lenguajes que requieren un manejo más consciente de la memoria (y de su liberación con los recolectores de basura).&lt;br /&gt;
&lt;br /&gt;
=Reglas del ownership=&lt;br /&gt;
#Cada valor en Rust tiene una variable que se llama su ''owner'' o propietario.&lt;br /&gt;
#Solamente puede existir un propietario en un momento determinado.&lt;br /&gt;
#Cuando el propietario sale del ámbito, el valor de borra.&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Ownership_-_Pertenencia&amp;diff=140</id>
		<title>Ownership - Pertenencia</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Ownership_-_Pertenencia&amp;diff=140"/>
		<updated>2021-03-09T03:36:45Z</updated>

		<summary type="html">&lt;p&gt;Lochi: Created page with &amp;quot;El Ownership o pertenencia es un concepto central en Rust y facilita el manejo de memoria, a diferencia de otros lenguajes que requieren un manejo más consciente de la memori...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;El Ownership o pertenencia es un concepto central en Rust y facilita el manejo de memoria, a diferencia de otros lenguajes que requieren un manejo más consciente de la memoria (y de su liberación con los recolectores de basura).&lt;br /&gt;
&lt;br /&gt;
=Reglas del ownership=&lt;br /&gt;
#Cada valor en Rust tiene una varialbe que se llama su&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Main_Page&amp;diff=139</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Main_Page&amp;diff=139"/>
		<updated>2021-03-09T03:32:52Z</updated>

		<summary type="html">&lt;p&gt;Lochi: /* Conceptos importantes en Rust */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;Tutorial de Rust&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
# [[¿Qué es Rust?]]&lt;br /&gt;
# [[Instalación]]&lt;br /&gt;
## [[Herramientas de edición de código]]&lt;br /&gt;
### [[Visual Studio Code]]&lt;br /&gt;
# [[Mi primer programa: Hola mundo]]&lt;br /&gt;
# [[Cargo]]&lt;br /&gt;
&lt;br /&gt;
=Conceptos importantes en Rust=&lt;br /&gt;
#[[Comentarios]]&lt;br /&gt;
#[[Variables]]&lt;br /&gt;
#[[Tipos de datos]]&lt;br /&gt;
#[[Funciones]]&lt;br /&gt;
#[[Control de flujo de ejecución]]&lt;br /&gt;
#[[Ownership - Pertenencia]]&lt;br /&gt;
&lt;br /&gt;
=Errores=&lt;br /&gt;
* [[:Category:Errores|Errores comunes]]&lt;br /&gt;
** [[Errores de instalación]]&lt;br /&gt;
** [[Errores de compilación]]&lt;br /&gt;
** [[Errores de ejecución]]&lt;br /&gt;
&lt;br /&gt;
=Advertencias=&lt;br /&gt;
* [[:Category:Advertencias|Advertencias comunes]]&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Control_de_flujo_de_ejecuci%C3%B3n&amp;diff=138</id>
		<title>Control de flujo de ejecución</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Control_de_flujo_de_ejecuci%C3%B3n&amp;diff=138"/>
		<updated>2021-03-06T02:02:58Z</updated>

		<summary type="html">&lt;p&gt;Lochi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Las dos estructuras más importantes para el control del flujo de ejecución son los lazos y la expresión &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
=Expresiones &amp;lt;code&amp;gt;if/else&amp;lt;/code&amp;gt;=&lt;br /&gt;
Muy similar a otros lenguajes, se evalúa si es falso o verdadero una expresión. En este caso se evalúa si una variable es menor a 10 o no:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     if a &amp;lt; 10 {&lt;br /&gt;
         println!(&amp;quot;la expresión es verdadera&amp;quot;);&lt;br /&gt;
     }else {&lt;br /&gt;
         println!(&amp;quot;la exprexión es false&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La expresión a evaluar debe ser de tipo &amp;lt;code&amp;gt;bool&amp;lt;/code&amp;gt;, de lo contrario producirá un [[Errores_de_compilación#Errores_en_el_uso_de_las_variables|error 308]]. Sobre comparaciones entre variables, se puede ver [[Comparaciones|acá]]&lt;br /&gt;
&lt;br /&gt;
El &amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt; es opcional, y se pueden colocar varias expresiones &amp;lt;code&amp;gt;if/else&amp;lt;/code&amp;gt; en cascada:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     if a == 10 {&lt;br /&gt;
         println!(&amp;quot;la variable es 10&amp;quot;);&lt;br /&gt;
     }else if a == 4 {&lt;br /&gt;
         println!(&amp;quot;la variable es 4&amp;quot;);&lt;br /&gt;
     }else if a == 7 {&lt;br /&gt;
         println!(&amp;quot;la variable es 7&amp;quot;);&lt;br /&gt;
     }else {&lt;br /&gt;
         println!(&amp;quot;la variable no es ni 10, 4 ni 7&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si debes poner muchos &amp;lt;code&amp;gt;if/else&amp;lt;/code&amp;gt; en cascada, lo mejor sería usar un [[match]].&lt;br /&gt;
&lt;br /&gt;
==Usando en &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt;==&lt;br /&gt;
Como el &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt; es una expresión, se puede utilizar en el lado derecho de un &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     let b = 7;&lt;br /&gt;
     let c = if a&amp;gt;b {3} else {1};&lt;br /&gt;
     println!(&amp;quot;El valor es {}&amp;quot;,c);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al ejecutar este programa, la salida sería &amp;quot;1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=Lazos con &amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt;=&lt;br /&gt;
El comando &amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt; causa que un bloque de código se repita infinitas veces a menos de que explícitamente se le ordene que termine. Este código nunca terminará:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     loop {&lt;br /&gt;
         println!(&amp;quot;hola&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La única forma de que deje de imprimir &amp;quot;hola&amp;quot; es usando Control-C.&lt;br /&gt;
&lt;br /&gt;
==Saliendo de un lazo con &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt;==&lt;br /&gt;
Con &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt; la iteración termina y se sale del lazo.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let mut a=0;&lt;br /&gt;
     loop {&lt;br /&gt;
         a=a+1;&lt;br /&gt;
         println!(&amp;quot;{}&amp;quot;,a);&lt;br /&gt;
         if a == 100 {break;}&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este programa, al llegar la impresión a 100, terminará el programa.&lt;br /&gt;
&lt;br /&gt;
==Devolviendo un valor==&lt;br /&gt;
&amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt; ejecuta una expresión varias veces y se puede utilizar el &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt; para devolver un valor, por ejemplo en una asignación:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let mut a =0;&lt;br /&gt;
     let b= loop {&lt;br /&gt;
         a=a+1;&lt;br /&gt;
         if a == 100 {&lt;br /&gt;
             break a;&lt;br /&gt;
        }&lt;br /&gt;
     };&lt;br /&gt;
     println!(&amp;quot;{}&amp;quot;,b);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Lazos condicionales con &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;=&lt;br /&gt;
Una forma de tener un lazo con un condicional es usar &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;. El programa anterior modificado sería:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let mut a =0;&lt;br /&gt;
     while a != 100 {&lt;br /&gt;
         a=a+1;&lt;br /&gt;
     }&lt;br /&gt;
     println!(&amp;quot;{}&amp;quot;,a);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Lazos con &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt;=&lt;br /&gt;
Hay varias formas de usar &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; para crear un lazo con un iterador.&lt;br /&gt;
&lt;br /&gt;
==Iterador con &amp;lt;code&amp;gt;..&amp;lt;/code&amp;gt;==&lt;br /&gt;
Con un iterador &amp;lt;code&amp;gt;a..b&amp;lt;/code&amp;gt;, los valores van desde a inclusive hasta b (excluyendolo):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     for a in 1..10 {&lt;br /&gt;
        println!(&amp;quot;{}&amp;quot;,a);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
En este ejemplo, se imprimirán los valores desde 1 hasta 9. En este caso la variable &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; no necesita ser declarada explícitamente antes.&lt;br /&gt;
&lt;br /&gt;
Si quisiéramos que el iterador fuera desde a hasta b inclusive, podemos poner un &amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt; antes de la segunda variable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     for a in 1..=10 {&lt;br /&gt;
        println!(&amp;quot;{}&amp;quot;,a);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Iteradores==&lt;br /&gt;
Hay varios iteradores: &amp;lt;code&amp;gt;into_iter&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;iter&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;iter_mut&amp;lt;/code&amp;gt;.&lt;br /&gt;
===&amp;lt;code&amp;gt;iter&amp;lt;/code&amp;gt;===&lt;br /&gt;
Toma cada elemento de la colección para cada iteración.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = [0,1,2];&lt;br /&gt;
     for x in a.iter() {&lt;br /&gt;
        println!(&amp;quot;{}&amp;quot;,x);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
En este ejemplo, se imprime los números 0,1,2.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;iter_iter&amp;lt;/code&amp;gt;===&lt;br /&gt;
Toma cada elemento de la colección y lo saca de la misma. Al final del for, la colección estará vacía.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;iter_mut&amp;lt;/code&amp;gt;===&lt;br /&gt;
Toma cada elemento, permitiendo su modificación.&lt;br /&gt;
&lt;br /&gt;
=Match=&lt;br /&gt;
&amp;lt;code&amp;gt;Match&amp;lt;/code&amp;gt; permite encontrar patrones, que se pueden usar como un &amp;lt;code&amp;gt;switch&amp;lt;/code&amp;gt; en el lenguaje C:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main() {&lt;br /&gt;
    let a=5;&lt;br /&gt;
&lt;br /&gt;
    match a {&lt;br /&gt;
        1 =&amp;gt; println!(&amp;quot;uno&amp;quot;),&lt;br /&gt;
        2 | 3 | 5 | 7 =&amp;gt; println!(&amp;quot;es un número primo&amp;quot;),&lt;br /&gt;
        _ =&amp;gt; println! (&amp;quot;cualquier otro número&amp;quot;),&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cada opción está separada por una coma, y se usa | para considerar varias opciones a la vez.&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Control_de_flujo_de_ejecuci%C3%B3n&amp;diff=137</id>
		<title>Control de flujo de ejecución</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Control_de_flujo_de_ejecuci%C3%B3n&amp;diff=137"/>
		<updated>2021-03-06T01:57:39Z</updated>

		<summary type="html">&lt;p&gt;Lochi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Las dos estructuras más importantes para el control del flujo de ejecución son los lazos y la expresión &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
=Expresiones &amp;lt;code&amp;gt;if/else&amp;lt;/code&amp;gt;=&lt;br /&gt;
Muy similar a otros lenguajes, se evalúa si es falso o verdadero una expresión. En este caso se evalúa si una variable es menor a 10 o no:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     if a &amp;lt; 10 {&lt;br /&gt;
         println!(&amp;quot;la expresión es verdadera&amp;quot;);&lt;br /&gt;
     }else {&lt;br /&gt;
         println!(&amp;quot;la exprexión es false&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La expresión a evaluar debe ser de tipo &amp;lt;code&amp;gt;bool&amp;lt;/code&amp;gt;, de lo contrario producirá un [[Errores_de_compilación#Errores_en_el_uso_de_las_variables|error 308]]. Sobre comparaciones entre variables, se puede ver [[Comparaciones|acá]]&lt;br /&gt;
&lt;br /&gt;
El &amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt; es opcional, y se pueden colocar varias expresiones &amp;lt;code&amp;gt;if/else&amp;lt;/code&amp;gt; en cascada:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     if a == 10 {&lt;br /&gt;
         println!(&amp;quot;la variable es 10&amp;quot;);&lt;br /&gt;
     }else if a == 4 {&lt;br /&gt;
         println!(&amp;quot;la variable es 4&amp;quot;);&lt;br /&gt;
     }else if a == 7 {&lt;br /&gt;
         println!(&amp;quot;la variable es 7&amp;quot;);&lt;br /&gt;
     }else {&lt;br /&gt;
         println!(&amp;quot;la variable no es ni 10, 4 ni 7&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si debes poner muchos &amp;lt;code&amp;gt;if/else&amp;lt;/code&amp;gt; en cascada, lo mejor sería usar un [[match]].&lt;br /&gt;
&lt;br /&gt;
==Usando en &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt;==&lt;br /&gt;
Como el &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt; es una expresión, se puede utilizar en el lado derecho de un &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     let b = 7;&lt;br /&gt;
     let c = if a&amp;gt;b {3} else {1};&lt;br /&gt;
     println!(&amp;quot;El valor es {}&amp;quot;,c);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al ejecutar este programa, la salida sería &amp;quot;1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=Lazos con &amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt;=&lt;br /&gt;
El comando &amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt; causa que un bloque de código se repita infinitas veces a menos de que explícitamente se le ordene que termine. Este código nunca terminará:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     loop {&lt;br /&gt;
         println!(&amp;quot;hola&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La única forma de que deje de imprimir &amp;quot;hola&amp;quot; es usando Control-C.&lt;br /&gt;
&lt;br /&gt;
==Saliendo de un lazo con &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt;==&lt;br /&gt;
Con &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt; la iteración termina y se sale del lazo.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let mut a=0;&lt;br /&gt;
     loop {&lt;br /&gt;
         a=a+1;&lt;br /&gt;
         println!(&amp;quot;{}&amp;quot;,a);&lt;br /&gt;
         if a == 100 {break;}&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este programa, al llegar la impresión a 100, terminará el programa.&lt;br /&gt;
&lt;br /&gt;
==Devolviendo un valor==&lt;br /&gt;
&amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt; ejecuta una expresión varias veces y se puede utilizar el &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt; para devolver un valor, por ejemplo en una asignación:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let mut a =0;&lt;br /&gt;
     let b= loop {&lt;br /&gt;
         a=a+1;&lt;br /&gt;
         if a == 100 {&lt;br /&gt;
             break a;&lt;br /&gt;
        }&lt;br /&gt;
     };&lt;br /&gt;
     println!(&amp;quot;{}&amp;quot;,b);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Lazos condicionales con &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;=&lt;br /&gt;
Una forma de tener un lazo con un condicional es usar &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;. El programa anterior modificado sería:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let mut a =0;&lt;br /&gt;
     while a != 100 {&lt;br /&gt;
         a=a+1;&lt;br /&gt;
     }&lt;br /&gt;
     println!(&amp;quot;{}&amp;quot;,a);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Lazos con &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt;=&lt;br /&gt;
Hay varias formas de usar &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; para crear un lazo con un iterador.&lt;br /&gt;
&lt;br /&gt;
==Iterador con &amp;lt;code&amp;gt;..&amp;lt;/code&amp;gt;==&lt;br /&gt;
Con un iterador &amp;lt;code&amp;gt;a..b&amp;lt;/code&amp;gt;, los valores van desde a inclusive hasta b (excluyendolo):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     for a in 1..10 {&lt;br /&gt;
        println!(&amp;quot;{}&amp;quot;,a);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
En este ejemplo, se imprimirán los valores desde 1 hasta 9. En este caso la variable &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; no necesita ser declarada explícitamente antes.&lt;br /&gt;
&lt;br /&gt;
Si quisiéramos que el iterador fuera desde a hasta b inclusive, podemos poner un &amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt; antes de la segunda variable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     for a in 1..=10 {&lt;br /&gt;
        println!(&amp;quot;{}&amp;quot;,a);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Iteradores==&lt;br /&gt;
Hay varios iteradores: &amp;lt;code&amp;gt;into_iter&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;iter&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;iter_mut&amp;lt;/code&amp;gt;.&lt;br /&gt;
===&amp;lt;code&amp;gt;iter&amp;lt;/code&amp;gt;===&lt;br /&gt;
Toma cada elemento de la colección para cada iteración.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = [0,1,2];&lt;br /&gt;
     for x in a.iter() {&lt;br /&gt;
        println!(&amp;quot;{}&amp;quot;,x);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
En este ejemplo, se imprime los números 0,1,2.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;iter_iter&amp;lt;/code&amp;gt;===&lt;br /&gt;
Toma cada elemento de la colección y lo saca de la misma. Al final del for, la colección estará vacía.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;iter_mut&amp;lt;/code&amp;gt;===&lt;br /&gt;
Toma cada elemento, permitiendo su modificación.&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Control_de_flujo_de_ejecuci%C3%B3n&amp;diff=136</id>
		<title>Control de flujo de ejecución</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Control_de_flujo_de_ejecuci%C3%B3n&amp;diff=136"/>
		<updated>2021-03-03T03:34:51Z</updated>

		<summary type="html">&lt;p&gt;Lochi: /* Iteradoradores */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Las dos estructuras más importantes para el control del flujo de ejecución son los lazos y la expresión &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
=Expresiones &amp;lt;code&amp;gt;if/else&amp;lt;/code&amp;gt;=&lt;br /&gt;
Muy similar a otros lenguajes, se evalúa si es falso o verdadero una expresión. En este caso se evalúa si una variable es menor a 10 o no:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     if a &amp;lt; 10 {&lt;br /&gt;
         println!(&amp;quot;la expresión es verdadera&amp;quot;);&lt;br /&gt;
     }else {&lt;br /&gt;
         println!(&amp;quot;la exprexión es false&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La expresión a evaluar debe ser de tipo &amp;lt;code&amp;gt;bool&amp;lt;/code&amp;gt;, de lo contrario producirá un [[Errores_de_compilación#Errores_en_el_uso_de_las_variables|error 308]]. Sobre comparaciones entre variables, se puede ver [[Comparaciones|acá]]&lt;br /&gt;
&lt;br /&gt;
El &amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt; es opcional, y se pueden colocar varias expresiones &amp;lt;code&amp;gt;if/else&amp;lt;/code&amp;gt; en cascada:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     if a == 10 {&lt;br /&gt;
         println!(&amp;quot;la variable es 10&amp;quot;);&lt;br /&gt;
     }else if a == 4 {&lt;br /&gt;
         println!(&amp;quot;la variable es 4&amp;quot;);&lt;br /&gt;
     }else if a == 7 {&lt;br /&gt;
         println!(&amp;quot;la variable es 7&amp;quot;);&lt;br /&gt;
     }else {&lt;br /&gt;
         println!(&amp;quot;la variable no es ni 10, 4 ni 7&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si debes poner muchos &amp;lt;code&amp;gt;if/else&amp;lt;/code&amp;gt; en cascada, lo mejor sería usar un [[match]].&lt;br /&gt;
&lt;br /&gt;
==Usando en &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt;==&lt;br /&gt;
Como el &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt; es una expresión, se puede utilizar en el lado derecho de un &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     let b = 7;&lt;br /&gt;
     let c = if a&amp;gt;b {3} else {1};&lt;br /&gt;
     println!(&amp;quot;El valor es {}&amp;quot;,c);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al ejecutar este programa, la salida sería &amp;quot;1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=Lazos con &amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt;=&lt;br /&gt;
El comando &amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt; causa que un bloque de código se repita infinitas veces a menos de que explícitamente se le ordene que termine. Este código nunca terminará:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     loop {&lt;br /&gt;
         println!(&amp;quot;hola&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La única forma de que deje de imprimir &amp;quot;hola&amp;quot; es usando Control-C.&lt;br /&gt;
&lt;br /&gt;
==Saliendo de un lazo con &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt;==&lt;br /&gt;
Con &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt; la iteración termina y se sale del lazo.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let mut a=0;&lt;br /&gt;
     loop {&lt;br /&gt;
         a=a+1;&lt;br /&gt;
         println!(&amp;quot;{}&amp;quot;,a);&lt;br /&gt;
         if a == 100 {break;}&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este programa, al llegar la impresión a 100, terminará el programa.&lt;br /&gt;
&lt;br /&gt;
==Devolviendo un valor==&lt;br /&gt;
&amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt; ejecuta una expresión varias veces y se puede utilizar el &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt; para devolver un valor, por ejemplo en una asignación:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let mut a =0;&lt;br /&gt;
     let b= loop {&lt;br /&gt;
         a=a+1;&lt;br /&gt;
         if a == 100 {&lt;br /&gt;
             break a;&lt;br /&gt;
        }&lt;br /&gt;
     };&lt;br /&gt;
     println!(&amp;quot;{}&amp;quot;,b);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Lazos condicionales con &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;=&lt;br /&gt;
Una forma de tener un lazo con un condicional es usar &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;. El programa anterior modificado sería:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let mut a =0;&lt;br /&gt;
     while a != 100 {&lt;br /&gt;
         a=a+1;&lt;br /&gt;
     }&lt;br /&gt;
     println!(&amp;quot;{}&amp;quot;,a);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Lazos con &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt;=&lt;br /&gt;
Hay varias formas de usar &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; para crear un lazo con un iterador.&lt;br /&gt;
&lt;br /&gt;
==Iterador con &amp;lt;code&amp;gt;..&amp;lt;/code&amp;gt;==&lt;br /&gt;
Con un iterador &amp;lt;code&amp;gt;a..b&amp;lt;/code&amp;gt;, los valores van desde a inclusive hasta b (excluyendolo):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     for a in 1..10 {&lt;br /&gt;
        println!(&amp;quot;{}&amp;quot;,a);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
En este ejemplo, se imprimirán los valores desde 1 hasta 9. En este caso la variable &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; no necesita ser declarada explícitamente antes.&lt;br /&gt;
&lt;br /&gt;
Si quisiéramos que el iterador fuera desde a hasta b inclusive, podemos poner un &amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt; antes de la segunda variable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     for a in 1..=10 {&lt;br /&gt;
        println!(&amp;quot;{}&amp;quot;,a);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Iteradores==&lt;br /&gt;
Hay varios iteradores: &amp;lt;code&amp;gt;into_iter&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;iter&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;iter_mut&amp;lt;/code&amp;gt;.&lt;br /&gt;
===&amp;lt;code&amp;gt;iter&amp;lt;/code&amp;gt;===&lt;br /&gt;
Toma cada elemento de la colección para cada iteración.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = [0,1,2];&lt;br /&gt;
     for x in a.iter() {&lt;br /&gt;
        println!(&amp;quot;{}&amp;quot;,x);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
En este ejemplo, se impime los números 0,1,2.&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Control_de_flujo_de_ejecuci%C3%B3n&amp;diff=135</id>
		<title>Control de flujo de ejecución</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Control_de_flujo_de_ejecuci%C3%B3n&amp;diff=135"/>
		<updated>2021-03-03T03:26:53Z</updated>

		<summary type="html">&lt;p&gt;Lochi: /* Lazos con for */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Las dos estructuras más importantes para el control del flujo de ejecución son los lazos y la expresión &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
=Expresiones &amp;lt;code&amp;gt;if/else&amp;lt;/code&amp;gt;=&lt;br /&gt;
Muy similar a otros lenguajes, se evalúa si es falso o verdadero una expresión. En este caso se evalúa si una variable es menor a 10 o no:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     if a &amp;lt; 10 {&lt;br /&gt;
         println!(&amp;quot;la expresión es verdadera&amp;quot;);&lt;br /&gt;
     }else {&lt;br /&gt;
         println!(&amp;quot;la exprexión es false&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La expresión a evaluar debe ser de tipo &amp;lt;code&amp;gt;bool&amp;lt;/code&amp;gt;, de lo contrario producirá un [[Errores_de_compilación#Errores_en_el_uso_de_las_variables|error 308]]. Sobre comparaciones entre variables, se puede ver [[Comparaciones|acá]]&lt;br /&gt;
&lt;br /&gt;
El &amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt; es opcional, y se pueden colocar varias expresiones &amp;lt;code&amp;gt;if/else&amp;lt;/code&amp;gt; en cascada:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     if a == 10 {&lt;br /&gt;
         println!(&amp;quot;la variable es 10&amp;quot;);&lt;br /&gt;
     }else if a == 4 {&lt;br /&gt;
         println!(&amp;quot;la variable es 4&amp;quot;);&lt;br /&gt;
     }else if a == 7 {&lt;br /&gt;
         println!(&amp;quot;la variable es 7&amp;quot;);&lt;br /&gt;
     }else {&lt;br /&gt;
         println!(&amp;quot;la variable no es ni 10, 4 ni 7&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si debes poner muchos &amp;lt;code&amp;gt;if/else&amp;lt;/code&amp;gt; en cascada, lo mejor sería usar un [[match]].&lt;br /&gt;
&lt;br /&gt;
==Usando en &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt;==&lt;br /&gt;
Como el &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt; es una expresión, se puede utilizar en el lado derecho de un &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     let b = 7;&lt;br /&gt;
     let c = if a&amp;gt;b {3} else {1};&lt;br /&gt;
     println!(&amp;quot;El valor es {}&amp;quot;,c);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al ejecutar este programa, la salida sería &amp;quot;1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=Lazos con &amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt;=&lt;br /&gt;
El comando &amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt; causa que un bloque de código se repita infinitas veces a menos de que explícitamente se le ordene que termine. Este código nunca terminará:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     loop {&lt;br /&gt;
         println!(&amp;quot;hola&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La única forma de que deje de imprimir &amp;quot;hola&amp;quot; es usando Control-C.&lt;br /&gt;
&lt;br /&gt;
==Saliendo de un lazo con &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt;==&lt;br /&gt;
Con &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt; la iteración termina y se sale del lazo.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let mut a=0;&lt;br /&gt;
     loop {&lt;br /&gt;
         a=a+1;&lt;br /&gt;
         println!(&amp;quot;{}&amp;quot;,a);&lt;br /&gt;
         if a == 100 {break;}&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este programa, al llegar la impresión a 100, terminará el programa.&lt;br /&gt;
&lt;br /&gt;
==Devolviendo un valor==&lt;br /&gt;
&amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt; ejecuta una expresión varias veces y se puede utilizar el &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt; para devolver un valor, por ejemplo en una asignación:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let mut a =0;&lt;br /&gt;
     let b= loop {&lt;br /&gt;
         a=a+1;&lt;br /&gt;
         if a == 100 {&lt;br /&gt;
             break a;&lt;br /&gt;
        }&lt;br /&gt;
     };&lt;br /&gt;
     println!(&amp;quot;{}&amp;quot;,b);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Lazos condicionales con &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;=&lt;br /&gt;
Una forma de tener un lazo con un condicional es usar &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;. El programa anterior modificado sería:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let mut a =0;&lt;br /&gt;
     while a != 100 {&lt;br /&gt;
         a=a+1;&lt;br /&gt;
     }&lt;br /&gt;
     println!(&amp;quot;{}&amp;quot;,a);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Lazos con &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt;=&lt;br /&gt;
Hay varias formas de usar &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; para crear un lazo con un iterador.&lt;br /&gt;
&lt;br /&gt;
==Iterador con &amp;lt;code&amp;gt;..&amp;lt;/code&amp;gt;==&lt;br /&gt;
Con un iterador &amp;lt;code&amp;gt;a..b&amp;lt;/code&amp;gt;, los valores van desde a inclusive hasta b (excluyendolo):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     for a in 1..10 {&lt;br /&gt;
        println!(&amp;quot;{}&amp;quot;,a);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
En este ejemplo, se imprimirán los valores desde 1 hasta 9. En este caso la variable &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; no necesita ser declarada explícitamente antes.&lt;br /&gt;
&lt;br /&gt;
Si quisiéramos que el iterador fuera desde a hasta b inclusive, podemos poner un &amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt; antes de la segunda variable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     for a in 1..=10 {&lt;br /&gt;
        println!(&amp;quot;{}&amp;quot;,a);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Iteradoradores==&lt;br /&gt;
Hay varios iteradores: &amp;lt;code&amp;gt;into_iter&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;iter&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;iter_mut&amp;lt;/code&amp;gt;.&lt;br /&gt;
===&amp;lt;code&amp;gt;iter&amp;lt;/code&amp;gt;===&lt;br /&gt;
Toma cada elemento de la colección para cada iteración.&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Control_de_flujo_de_ejecuci%C3%B3n&amp;diff=134</id>
		<title>Control de flujo de ejecución</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Control_de_flujo_de_ejecuci%C3%B3n&amp;diff=134"/>
		<updated>2021-02-21T01:41:37Z</updated>

		<summary type="html">&lt;p&gt;Lochi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Las dos estructuras más importantes para el control del flujo de ejecución son los lazos y la expresión &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
=Expresiones &amp;lt;code&amp;gt;if/else&amp;lt;/code&amp;gt;=&lt;br /&gt;
Muy similar a otros lenguajes, se evalúa si es falso o verdadero una expresión. En este caso se evalúa si una variable es menor a 10 o no:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     if a &amp;lt; 10 {&lt;br /&gt;
         println!(&amp;quot;la expresión es verdadera&amp;quot;);&lt;br /&gt;
     }else {&lt;br /&gt;
         println!(&amp;quot;la exprexión es false&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La expresión a evaluar debe ser de tipo &amp;lt;code&amp;gt;bool&amp;lt;/code&amp;gt;, de lo contrario producirá un [[Errores_de_compilación#Errores_en_el_uso_de_las_variables|error 308]]. Sobre comparaciones entre variables, se puede ver [[Comparaciones|acá]]&lt;br /&gt;
&lt;br /&gt;
El &amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt; es opcional, y se pueden colocar varias expresiones &amp;lt;code&amp;gt;if/else&amp;lt;/code&amp;gt; en cascada:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     if a == 10 {&lt;br /&gt;
         println!(&amp;quot;la variable es 10&amp;quot;);&lt;br /&gt;
     }else if a == 4 {&lt;br /&gt;
         println!(&amp;quot;la variable es 4&amp;quot;);&lt;br /&gt;
     }else if a == 7 {&lt;br /&gt;
         println!(&amp;quot;la variable es 7&amp;quot;);&lt;br /&gt;
     }else {&lt;br /&gt;
         println!(&amp;quot;la variable no es ni 10, 4 ni 7&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si debes poner muchos &amp;lt;code&amp;gt;if/else&amp;lt;/code&amp;gt; en cascada, lo mejor sería usar un [[match]].&lt;br /&gt;
&lt;br /&gt;
==Usando en &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt;==&lt;br /&gt;
Como el &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt; es una expresión, se puede utilizar en el lado derecho de un &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     let b = 7;&lt;br /&gt;
     let c = if a&amp;gt;b {3} else {1};&lt;br /&gt;
     println!(&amp;quot;El valor es {}&amp;quot;,c);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al ejecutar este programa, la salida sería &amp;quot;1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=Lazos con &amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt;=&lt;br /&gt;
El comando &amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt; causa que un bloque de código se repita infinitas veces a menos de que explícitamente se le ordene que termine. Este código nunca terminará:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     loop {&lt;br /&gt;
         println!(&amp;quot;hola&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La única forma de que deje de imprimir &amp;quot;hola&amp;quot; es usando Control-C.&lt;br /&gt;
&lt;br /&gt;
==Saliendo de un lazo con &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt;==&lt;br /&gt;
Con &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt; la iteración termina y se sale del lazo.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let mut a=0;&lt;br /&gt;
     loop {&lt;br /&gt;
         a=a+1;&lt;br /&gt;
         println!(&amp;quot;{}&amp;quot;,a);&lt;br /&gt;
         if a == 100 {break;}&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este programa, al llegar la impresión a 100, terminará el programa.&lt;br /&gt;
&lt;br /&gt;
==Devolviendo un valor==&lt;br /&gt;
&amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt; ejecuta una expresión varias veces y se puede utilizar el &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt; para devolver un valor, por ejemplo en una asignación:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let mut a =0;&lt;br /&gt;
     let b= loop {&lt;br /&gt;
         a=a+1;&lt;br /&gt;
         if a == 100 {&lt;br /&gt;
             break a;&lt;br /&gt;
        }&lt;br /&gt;
     };&lt;br /&gt;
     println!(&amp;quot;{}&amp;quot;,b);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Lazos condicionales con &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;=&lt;br /&gt;
Una forma de tener un lazo con un condicional es usar &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;. El programa anterior modificado sería:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let mut a =0;&lt;br /&gt;
     while a != 100 {&lt;br /&gt;
         a=a+1;&lt;br /&gt;
     }&lt;br /&gt;
     println!(&amp;quot;{}&amp;quot;,a);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Lazos con &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt;=&lt;br /&gt;
Hay varias formas de usar &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; para crear un lazo con un iterador.&lt;br /&gt;
&lt;br /&gt;
==Iterador con &amp;lt;code&amp;gt;..&amp;lt;/code&amp;gt;==&lt;br /&gt;
Con un iterador &amp;lt;code&amp;gt;a..b&amp;lt;/code&amp;gt;, los valores van desde a inclusive hasta b (excluyendolo):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     for a in 1..10 {&lt;br /&gt;
        println!(&amp;quot;{}&amp;quot;,a);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
En este ejemplo, se imprimirán los valores desde 1 hasta 9. En este caso la variable &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; no necesita ser declarada explícitamente antes.&lt;br /&gt;
&lt;br /&gt;
Si quisiéramos que el iterador fuera desde a hasta b inclusive, podemos poner un &amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt; antes de la segunda variable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     for a in 1..=10 {&lt;br /&gt;
        println!(&amp;quot;{}&amp;quot;,a);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Control_de_flujo_de_ejecuci%C3%B3n&amp;diff=133</id>
		<title>Control de flujo de ejecución</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Control_de_flujo_de_ejecuci%C3%B3n&amp;diff=133"/>
		<updated>2021-02-18T03:07:53Z</updated>

		<summary type="html">&lt;p&gt;Lochi: /* Expresiones if/else */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Las dos estructuras más importantes para el control del flujo de ejecución son los lazos y la expresión &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
=Expresiones &amp;lt;code&amp;gt;if/else&amp;lt;/code&amp;gt;=&lt;br /&gt;
Muy similar a otros lenguajes, se evalúa si es falso o verdadero una expresión. En este caso se evalúa si una variable es menor a 10 o no:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     if a &amp;lt; 10 {&lt;br /&gt;
         println!(&amp;quot;la expresión es verdadera&amp;quot;);&lt;br /&gt;
     }else {&lt;br /&gt;
         println!(&amp;quot;la exprexión es false&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La expresión a evaluar debe ser de tipo &amp;lt;code&amp;gt;bool&amp;lt;/code&amp;gt;, de lo contrario producirá un [[Errores_de_compilación#Errores_en_el_uso_de_las_variables|error 308]]. Sobre comparaciones entre variables, se puede ver [[Comparaciones|acá]]&lt;br /&gt;
&lt;br /&gt;
El &amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt; es opcional, y se pueden colocar varias expresiones &amp;lt;code&amp;gt;if/else&amp;lt;/code&amp;gt; en cascada:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     if a == 10 {&lt;br /&gt;
         println!(&amp;quot;la variable es 10&amp;quot;);&lt;br /&gt;
     }else if a == 4 {&lt;br /&gt;
         println!(&amp;quot;la variable es 4&amp;quot;);&lt;br /&gt;
     }else if a == 7 {&lt;br /&gt;
         println!(&amp;quot;la variable es 7&amp;quot;);&lt;br /&gt;
     }else {&lt;br /&gt;
         println!(&amp;quot;la variable no es ni 10, 4 ni 7&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si debes poner muchos &amp;lt;code&amp;gt;if/else&amp;lt;/code&amp;gt; en cascada, lo mejor sería usar un [[match]].&lt;br /&gt;
&lt;br /&gt;
==Usando en &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt;==&lt;br /&gt;
Como el &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt; es una expresión, se puede utilizar en el lado derecho de un &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     let b = 7;&lt;br /&gt;
     let c = if a&amp;gt;b {3} else {1};&lt;br /&gt;
     println!(&amp;quot;El valor es {}&amp;quot;,c);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al ejecutar este programa, la salida sería &amp;quot;1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=Lazos con &amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt;=&lt;br /&gt;
El comando &amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt; causa que un bloque de código se repita infinitas veces a menos de que explícitamente se le ordene que termine. Este código nunca terminará:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     loop {&lt;br /&gt;
         println!(&amp;quot;hola&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La única forma de que deje de imprimir &amp;quot;hola&amp;quot; es usando Control-C.&lt;br /&gt;
&lt;br /&gt;
==Saliendo de un lazo con &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt;==&lt;br /&gt;
Con &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt; la iteración termina y se sale del lazo.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let mut a=0;&lt;br /&gt;
     loop {&lt;br /&gt;
         a=a+1;&lt;br /&gt;
         println!(&amp;quot;{}&amp;quot;,a);&lt;br /&gt;
         if a == 100 {break;}&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este programa, al llegar la impresión a 100, terminará el programa.&lt;br /&gt;
&lt;br /&gt;
==Devolviendo un valor==&lt;br /&gt;
&amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt; ejecuta una expresión varias veces y se puede utilizar el &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt; para devolver un valor, por ejemplo en una asignación:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let mut a =0;&lt;br /&gt;
     let b= loop {&lt;br /&gt;
         a=a+1;&lt;br /&gt;
         if a == 100 {&lt;br /&gt;
             break a;&lt;br /&gt;
        }&lt;br /&gt;
     };&lt;br /&gt;
     println!(&amp;quot;{}&amp;quot;,b);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Lazos condicionales con &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;=&lt;br /&gt;
Una forma de tener un lazo con un condicional es usar &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;. El programa anterior modificado sería:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let mut a =0;&lt;br /&gt;
     while a != 100 {&lt;br /&gt;
         a=a+1;&lt;br /&gt;
     }&lt;br /&gt;
     println!(&amp;quot;{}&amp;quot;,a);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Control_de_flujo_de_ejecuci%C3%B3n&amp;diff=132</id>
		<title>Control de flujo de ejecución</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Control_de_flujo_de_ejecuci%C3%B3n&amp;diff=132"/>
		<updated>2021-02-18T03:06:52Z</updated>

		<summary type="html">&lt;p&gt;Lochi: /* Lazos condicionales con while */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Las dos estructuras más importantes para el control del flujo de ejecución son los lazos y la expresión &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
=Expresiones &amp;lt;code&amp;gt;if/else&amp;lt;/code&amp;gt;=&lt;br /&gt;
Muy similar a otros lenguajes, se evalúa si es falso o verdadero una expresión. En este caso se evalúa si una variable es menor a 10 o no:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     if a &amp;lt; 10 {&lt;br /&gt;
         println!(&amp;quot;la expresión es verdadera&amp;quot;);&lt;br /&gt;
     }else {&lt;br /&gt;
         println!(&amp;quot;la exprexión es false&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La expresión a evaluar debe ser de tipo &amp;lt;code&amp;gt;bool&amp;lt;/code&amp;gt;, de lo contrario producirá un [[Errores_de_compilación#Errores_en_el_uso_de_las_variables|error 308]].&lt;br /&gt;
&lt;br /&gt;
El &amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt; es opcional, y se pueden colocar varias expresiones &amp;lt;code&amp;gt;if/else&amp;lt;/code&amp;gt; en cascada:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     if a == 10 {&lt;br /&gt;
         println!(&amp;quot;la variable es 10&amp;quot;);&lt;br /&gt;
     }else if a == 4 {&lt;br /&gt;
         println!(&amp;quot;la variable es 4&amp;quot;);&lt;br /&gt;
     }else if a == 7 {&lt;br /&gt;
         println!(&amp;quot;la variable es 7&amp;quot;);&lt;br /&gt;
     }else {&lt;br /&gt;
         println!(&amp;quot;la variable no es ni 10, 4 ni 7&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si debes poner muchos &amp;lt;code&amp;gt;if/else&amp;lt;/code&amp;gt; en cascada, lo mejor sería usar un [[match]].&lt;br /&gt;
&lt;br /&gt;
==Usando en &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt;==&lt;br /&gt;
Como el &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt; es una expresión, se puede utilizar en el lado derecho de un &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     let b = 7;&lt;br /&gt;
     let c = if a&amp;gt;b {3} else {1};&lt;br /&gt;
     println!(&amp;quot;El valor es {}&amp;quot;,c);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al ejecutar este programa, la salida sería &amp;quot;1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=Lazos con &amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt;=&lt;br /&gt;
El comando &amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt; causa que un bloque de código se repita infinitas veces a menos de que explícitamente se le ordene que termine. Este código nunca terminará:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     loop {&lt;br /&gt;
         println!(&amp;quot;hola&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La única forma de que deje de imprimir &amp;quot;hola&amp;quot; es usando Control-C.&lt;br /&gt;
&lt;br /&gt;
==Saliendo de un lazo con &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt;==&lt;br /&gt;
Con &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt; la iteración termina y se sale del lazo.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let mut a=0;&lt;br /&gt;
     loop {&lt;br /&gt;
         a=a+1;&lt;br /&gt;
         println!(&amp;quot;{}&amp;quot;,a);&lt;br /&gt;
         if a == 100 {break;}&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este programa, al llegar la impresión a 100, terminará el programa.&lt;br /&gt;
&lt;br /&gt;
==Devolviendo un valor==&lt;br /&gt;
&amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt; ejecuta una expresión varias veces y se puede utilizar el &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt; para devolver un valor, por ejemplo en una asignación:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let mut a =0;&lt;br /&gt;
     let b= loop {&lt;br /&gt;
         a=a+1;&lt;br /&gt;
         if a == 100 {&lt;br /&gt;
             break a;&lt;br /&gt;
        }&lt;br /&gt;
     };&lt;br /&gt;
     println!(&amp;quot;{}&amp;quot;,b);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Lazos condicionales con &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;=&lt;br /&gt;
Una forma de tener un lazo con un condicional es usar &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;. El programa anterior modificado sería:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let mut a =0;&lt;br /&gt;
     while a != 100 {&lt;br /&gt;
         a=a+1;&lt;br /&gt;
     }&lt;br /&gt;
     println!(&amp;quot;{}&amp;quot;,a);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Control_de_flujo_de_ejecuci%C3%B3n&amp;diff=131</id>
		<title>Control de flujo de ejecución</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Control_de_flujo_de_ejecuci%C3%B3n&amp;diff=131"/>
		<updated>2021-02-18T02:57:39Z</updated>

		<summary type="html">&lt;p&gt;Lochi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Las dos estructuras más importantes para el control del flujo de ejecución son los lazos y la expresión &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
=Expresiones &amp;lt;code&amp;gt;if/else&amp;lt;/code&amp;gt;=&lt;br /&gt;
Muy similar a otros lenguajes, se evalúa si es falso o verdadero una expresión. En este caso se evalúa si una variable es menor a 10 o no:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     if a &amp;lt; 10 {&lt;br /&gt;
         println!(&amp;quot;la expresión es verdadera&amp;quot;);&lt;br /&gt;
     }else {&lt;br /&gt;
         println!(&amp;quot;la exprexión es false&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La expresión a evaluar debe ser de tipo &amp;lt;code&amp;gt;bool&amp;lt;/code&amp;gt;, de lo contrario producirá un [[Errores_de_compilación#Errores_en_el_uso_de_las_variables|error 308]].&lt;br /&gt;
&lt;br /&gt;
El &amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt; es opcional, y se pueden colocar varias expresiones &amp;lt;code&amp;gt;if/else&amp;lt;/code&amp;gt; en cascada:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     if a == 10 {&lt;br /&gt;
         println!(&amp;quot;la variable es 10&amp;quot;);&lt;br /&gt;
     }else if a == 4 {&lt;br /&gt;
         println!(&amp;quot;la variable es 4&amp;quot;);&lt;br /&gt;
     }else if a == 7 {&lt;br /&gt;
         println!(&amp;quot;la variable es 7&amp;quot;);&lt;br /&gt;
     }else {&lt;br /&gt;
         println!(&amp;quot;la variable no es ni 10, 4 ni 7&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si debes poner muchos &amp;lt;code&amp;gt;if/else&amp;lt;/code&amp;gt; en cascada, lo mejor sería usar un [[match]].&lt;br /&gt;
&lt;br /&gt;
==Usando en &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt;==&lt;br /&gt;
Como el &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt; es una expresión, se puede utilizar en el lado derecho de un &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     let b = 7;&lt;br /&gt;
     let c = if a&amp;gt;b {3} else {1};&lt;br /&gt;
     println!(&amp;quot;El valor es {}&amp;quot;,c);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al ejecutar este programa, la salida sería &amp;quot;1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=Lazos con &amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt;=&lt;br /&gt;
El comando &amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt; causa que un bloque de código se repita infinitas veces a menos de que explícitamente se le ordene que termine. Este código nunca terminará:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     loop {&lt;br /&gt;
         println!(&amp;quot;hola&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La única forma de que deje de imprimir &amp;quot;hola&amp;quot; es usando Control-C.&lt;br /&gt;
&lt;br /&gt;
==Saliendo de un lazo con &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt;==&lt;br /&gt;
Con &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt; la iteración termina y se sale del lazo.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let mut a=0;&lt;br /&gt;
     loop {&lt;br /&gt;
         a=a+1;&lt;br /&gt;
         println!(&amp;quot;{}&amp;quot;,a);&lt;br /&gt;
         if a == 100 {break;}&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este programa, al llegar la impresión a 100, terminará el programa.&lt;br /&gt;
&lt;br /&gt;
==Devolviendo un valor==&lt;br /&gt;
&amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt; ejecuta una expresión varias veces y se puede utilizar el &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt; para devolver un valor, por ejemplo en una asignación:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let mut a =0;&lt;br /&gt;
     let b= loop {&lt;br /&gt;
         a=a+1;&lt;br /&gt;
         if a == 100 {&lt;br /&gt;
             break a;&lt;br /&gt;
        }&lt;br /&gt;
     };&lt;br /&gt;
     println!(&amp;quot;{}&amp;quot;,b);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Lazos condicionales con &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;=&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Control_de_flujo_de_ejecuci%C3%B3n&amp;diff=130</id>
		<title>Control de flujo de ejecución</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Control_de_flujo_de_ejecuci%C3%B3n&amp;diff=130"/>
		<updated>2021-02-18T02:56:49Z</updated>

		<summary type="html">&lt;p&gt;Lochi: /* Saliendo de un lazo con break */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Las dos estructuras más importantes para el control del flujo de ejecución son los lazos y la expresión &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
=Expresiones &amp;lt;code&amp;gt;if/else&amp;lt;/code&amp;gt;=&lt;br /&gt;
Muy similar a otros lenguajes, se evalúa si es falso o verdadero una expresión. En este caso se evalúa si una variable es menor a 10 o no:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     if a &amp;lt; 10 {&lt;br /&gt;
         println!(&amp;quot;la expresión es verdadera&amp;quot;);&lt;br /&gt;
     }else {&lt;br /&gt;
         println!(&amp;quot;la exprexión es false&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La expresión a evaluar debe ser de tipo &amp;lt;code&amp;gt;bool&amp;lt;/code&amp;gt;, de lo contrario producirá un [[Errores_de_compilación#Errores_en_el_uso_de_las_variables|error 308]].&lt;br /&gt;
&lt;br /&gt;
El &amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt; es opcional, y se pueden colocar varias expresiones &amp;lt;code&amp;gt;if/else&amp;lt;/code&amp;gt; en cascada:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     if a == 10 {&lt;br /&gt;
         println!(&amp;quot;la variable es 10&amp;quot;);&lt;br /&gt;
     }else if a == 4 {&lt;br /&gt;
         println!(&amp;quot;la variable es 4&amp;quot;);&lt;br /&gt;
     }else if a == 7 {&lt;br /&gt;
         println!(&amp;quot;la variable es 7&amp;quot;);&lt;br /&gt;
     }else {&lt;br /&gt;
         println!(&amp;quot;la variable no es ni 10, 4 ni 7&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si debes poner muchos &amp;lt;code&amp;gt;if/else&amp;lt;/code&amp;gt; en cascada, lo mejor sería usar un [[match]].&lt;br /&gt;
&lt;br /&gt;
==Usando en &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt;==&lt;br /&gt;
Como el &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt; es una expresión, se puede utilizar en el lado derecho de un &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     let b = 7;&lt;br /&gt;
     let c = if a&amp;gt;b {3} else {1};&lt;br /&gt;
     println!(&amp;quot;El valor es {}&amp;quot;,c);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al ejecutar este programa, la salida sería &amp;quot;1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=Lazos=&lt;br /&gt;
El comando &amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt; causa que un bloque de código se repita infinitas veces a menos de que explícitamente se le ordene que termine. Este código nunca terminará:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     loop {&lt;br /&gt;
         println!(&amp;quot;hola&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La única forma de que deje de imprimir &amp;quot;hola&amp;quot; es usando Control-C.&lt;br /&gt;
&lt;br /&gt;
==Saliendo de un lazo con &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt;==&lt;br /&gt;
Con &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt; la iteración termina y se sale del lazo.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let mut a=0;&lt;br /&gt;
     loop {&lt;br /&gt;
         a=a+1;&lt;br /&gt;
         println!(&amp;quot;{}&amp;quot;,a);&lt;br /&gt;
         if a == 100 {break;}&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este programa, al llegar la impresión a 100, terminará el programa.&lt;br /&gt;
&lt;br /&gt;
==Devolviendo un valor==&lt;br /&gt;
&amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt; ejecuta una expresión varias veces y se puede utilizar el &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt; para devolver un valor, por ejemplo en una asignación:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let mut a =0;&lt;br /&gt;
     let b= loop {&lt;br /&gt;
         a=a+1;&lt;br /&gt;
         if a == 100 {&lt;br /&gt;
             break a;&lt;br /&gt;
        }&lt;br /&gt;
     };&lt;br /&gt;
     println!(&amp;quot;{}&amp;quot;,b);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Control_de_flujo_de_ejecuci%C3%B3n&amp;diff=129</id>
		<title>Control de flujo de ejecución</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Control_de_flujo_de_ejecuci%C3%B3n&amp;diff=129"/>
		<updated>2021-02-18T02:46:13Z</updated>

		<summary type="html">&lt;p&gt;Lochi: /* Lazos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Las dos estructuras más importantes para el control del flujo de ejecución son los lazos y la expresión &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
=Expresiones &amp;lt;code&amp;gt;if/else&amp;lt;/code&amp;gt;=&lt;br /&gt;
Muy similar a otros lenguajes, se evalúa si es falso o verdadero una expresión. En este caso se evalúa si una variable es menor a 10 o no:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     if a &amp;lt; 10 {&lt;br /&gt;
         println!(&amp;quot;la expresión es verdadera&amp;quot;);&lt;br /&gt;
     }else {&lt;br /&gt;
         println!(&amp;quot;la exprexión es false&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La expresión a evaluar debe ser de tipo &amp;lt;code&amp;gt;bool&amp;lt;/code&amp;gt;, de lo contrario producirá un [[Errores_de_compilación#Errores_en_el_uso_de_las_variables|error 308]].&lt;br /&gt;
&lt;br /&gt;
El &amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt; es opcional, y se pueden colocar varias expresiones &amp;lt;code&amp;gt;if/else&amp;lt;/code&amp;gt; en cascada:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     if a == 10 {&lt;br /&gt;
         println!(&amp;quot;la variable es 10&amp;quot;);&lt;br /&gt;
     }else if a == 4 {&lt;br /&gt;
         println!(&amp;quot;la variable es 4&amp;quot;);&lt;br /&gt;
     }else if a == 7 {&lt;br /&gt;
         println!(&amp;quot;la variable es 7&amp;quot;);&lt;br /&gt;
     }else {&lt;br /&gt;
         println!(&amp;quot;la variable no es ni 10, 4 ni 7&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si debes poner muchos &amp;lt;code&amp;gt;if/else&amp;lt;/code&amp;gt; en cascada, lo mejor sería usar un [[match]].&lt;br /&gt;
&lt;br /&gt;
==Usando en &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt;==&lt;br /&gt;
Como el &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt; es una expresión, se puede utilizar en el lado derecho de un &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     let b = 7;&lt;br /&gt;
     let c = if a&amp;gt;b {3} else {1};&lt;br /&gt;
     println!(&amp;quot;El valor es {}&amp;quot;,c);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al ejecutar este programa, la salida sería &amp;quot;1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=Lazos=&lt;br /&gt;
El comando &amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt; causa que un bloque de código se repita infinitas veces a menos de que explícitamente se le ordene que termine. Este código nunca terminará:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     loop {&lt;br /&gt;
         println!(&amp;quot;hola&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La única forma de que deje de imprimir &amp;quot;hola&amp;quot; es usando Control-C.&lt;br /&gt;
&lt;br /&gt;
==Saliendo de un lazo con &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt;==&lt;br /&gt;
Con &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt; la iteración termina y se sale del lazo.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let mut a=0;&lt;br /&gt;
     loop {&lt;br /&gt;
         a=a+1;&lt;br /&gt;
         println!(&amp;quot;{}&amp;quot;,a);&lt;br /&gt;
         if a == 100 {break;}&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
En este programa, al llegar la impresión a 100, terminará el programa.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Control_de_flujo_de_ejecuci%C3%B3n&amp;diff=127</id>
		<title>Control de flujo de ejecución</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Control_de_flujo_de_ejecuci%C3%B3n&amp;diff=127"/>
		<updated>2021-02-16T03:16:30Z</updated>

		<summary type="html">&lt;p&gt;Lochi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Las dos estructuras más importantes para el control del flujo de ejecución son los lazos y la expresión &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
=Expresiones &amp;lt;code&amp;gt;if/else&amp;lt;/code&amp;gt;=&lt;br /&gt;
Muy similar a otros lenguajes, se evalúa si es falso o verdadero una expresión. En este caso se evalúa si una variable es menor a 10 o no:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     if a &amp;lt; 10 {&lt;br /&gt;
         println!(&amp;quot;la expresión es verdadera&amp;quot;);&lt;br /&gt;
     }else {&lt;br /&gt;
         println!(&amp;quot;la exprexión es false&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La expresión a evaluar debe ser de tipo &amp;lt;code&amp;gt;bool&amp;lt;/code&amp;gt;, de lo contrario producirá un [[Errores_de_compilación#Errores_en_el_uso_de_las_variables|error 308]].&lt;br /&gt;
&lt;br /&gt;
El &amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt; es opcional, y se pueden colocar varias expresiones &amp;lt;code&amp;gt;if/else&amp;lt;/code&amp;gt; en cascada:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     if a == 10 {&lt;br /&gt;
         println!(&amp;quot;la variable es 10&amp;quot;);&lt;br /&gt;
     }else if a == 4 {&lt;br /&gt;
         println!(&amp;quot;la variable es 4&amp;quot;);&lt;br /&gt;
     }else if a == 7 {&lt;br /&gt;
         println!(&amp;quot;la variable es 7&amp;quot;);&lt;br /&gt;
     }else {&lt;br /&gt;
         println!(&amp;quot;la variable no es ni 10, 4 ni 7&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si debes poner muchos &amp;lt;code&amp;gt;if/else&amp;lt;/code&amp;gt; en cascada, lo mejor sería usar un [[match]].&lt;br /&gt;
&lt;br /&gt;
==Usando en &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt;==&lt;br /&gt;
Como el &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt; es una expresión, se puede utilizar en el lado derecho de un &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     let b = 7;&lt;br /&gt;
     let c = if a&amp;gt;b {3} else {1};&lt;br /&gt;
     println!(&amp;quot;El valor es {}&amp;quot;,c);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al ejecutar este programa, la salida sería &amp;quot;1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=Lazos=&lt;br /&gt;
El comando &amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt; causa que un bloque de código se repita infinitas veces a menos de que explícitamente se le ordene que termine. Este código nunca terminará:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     loop {&lt;br /&gt;
         println!(&amp;quot;hola&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La única forma de que deje de imprimir &amp;quot;hola&amp;quot; es usando Control-C.&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Control_de_flujo_de_ejecuci%C3%B3n&amp;diff=126</id>
		<title>Control de flujo de ejecución</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Control_de_flujo_de_ejecuci%C3%B3n&amp;diff=126"/>
		<updated>2021-02-16T03:12:20Z</updated>

		<summary type="html">&lt;p&gt;Lochi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Las dos estructuras más importantes para el control del flujo de ejecución son los lazos y la expresión &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
=Expresiones &amp;lt;code&amp;gt;if/else&amp;lt;/code&amp;gt;=&lt;br /&gt;
Muy similar a otros lenguajes, se evalúa si es falso o verdadero una expresión. En este caso se evalúa si una variable es menor a 10 o no:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     if a &amp;lt; 10 {&lt;br /&gt;
         println!(&amp;quot;la expresión es verdadera&amp;quot;);&lt;br /&gt;
     }else {&lt;br /&gt;
         println!(&amp;quot;la exprexión es false&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La expresión a evaluar debe ser de tipo &amp;lt;code&amp;gt;bool&amp;lt;/code&amp;gt;, de lo contrario producirá un [[Errores_de_compilación#Errores_en_el_uso_de_las_variables|error 308]].&lt;br /&gt;
&lt;br /&gt;
El &amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt; es opcional, y se pueden colocar varias expresiones &amp;lt;code&amp;gt;if/else&amp;lt;/code&amp;gt; en cascada:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     if a == 10 {&lt;br /&gt;
         println!(&amp;quot;la variable es 10&amp;quot;);&lt;br /&gt;
     }else if a == 4 {&lt;br /&gt;
         println!(&amp;quot;la variable es 4&amp;quot;);&lt;br /&gt;
     }else if a == 7 {&lt;br /&gt;
         println!(&amp;quot;la variable es 7&amp;quot;);&lt;br /&gt;
     }else {&lt;br /&gt;
         println!(&amp;quot;la variable no es ni 10, 4 ni 7&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si debes poner muchos &amp;lt;code&amp;gt;if/else&amp;lt;/code&amp;gt; en cascada, lo mejor sería usar un [[match]].&lt;br /&gt;
&lt;br /&gt;
==Usando en &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt;==&lt;br /&gt;
Como el &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt; es una expresión, se puede utilizar en el lado derecho de un &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     let b = 7;&lt;br /&gt;
     let c = if a&amp;gt;b {3} else {1};&lt;br /&gt;
     println!(&amp;quot;El valor es {}&amp;quot;,c);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Control_de_flujo_de_ejecuci%C3%B3n&amp;diff=125</id>
		<title>Control de flujo de ejecución</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Control_de_flujo_de_ejecuci%C3%B3n&amp;diff=125"/>
		<updated>2021-02-15T03:26:36Z</updated>

		<summary type="html">&lt;p&gt;Lochi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Las dos estructuras más importantes para el control del flujo de ejecución son los lazos y la expresión &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
=Expresiones &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;=&lt;br /&gt;
Muy similar a otros lenguajes, se evalúa si es falso o verdadero una expresión. En este caso se evalúa si una variable es menor a 10 o no:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     if a &amp;lt; 10 {&lt;br /&gt;
         println!(&amp;quot;la expresión es verdadera&amp;quot;);&lt;br /&gt;
     }else {&lt;br /&gt;
         println!(&amp;quot;la exprexión es false&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La expresión a evaluar debe ser de tipo &amp;lt;code&amp;gt;bool&amp;lt;/code&amp;gt;, de lo contrario producirá un [[Errores_de_compilación#Errores_en_el_uso_de_las_variables|error 308]].&lt;br /&gt;
&lt;br /&gt;
El &amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt; es opcional, y se pueden colocar varias expresiones &amp;lt;code&amp;gt;if/else&amp;lt;/code&amp;gt; en cascada:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     if a == 10 {&lt;br /&gt;
         println!(&amp;quot;la variable es 10&amp;quot;);&lt;br /&gt;
     }else if a == 4 {&lt;br /&gt;
         println!(&amp;quot;la variable es 4&amp;quot;);&lt;br /&gt;
     }else if a == 7 {&lt;br /&gt;
         println!(&amp;quot;la variable es 7&amp;quot;);&lt;br /&gt;
     }else {&lt;br /&gt;
         println!(&amp;quot;la variable no es ni 10, 4 ni 7&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si debes poner muchos &amp;lt;code&amp;gt;if/else&amp;lt;/code&amp;gt; en cascada, lo mejor sería usar un [[match]].&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Control_de_flujo_de_ejecuci%C3%B3n&amp;diff=124</id>
		<title>Control de flujo de ejecución</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Control_de_flujo_de_ejecuci%C3%B3n&amp;diff=124"/>
		<updated>2021-02-15T03:20:49Z</updated>

		<summary type="html">&lt;p&gt;Lochi: Created page with &amp;quot;Las dos estructuras más importantes para el control del flujo de ejecución son los lazos y la expresión &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;:  =Expresiones &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;= Muy similar a otros...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Las dos estructuras más importantes para el control del flujo de ejecución son los lazos y la expresión &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
=Expresiones &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;=&lt;br /&gt;
Muy similar a otros lenguajes, se evalúa si es falso o verdadero una expresión. En este caso se evalúa si una variable es menor a 10 o no:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 fn main() {&lt;br /&gt;
     let a = 5;&lt;br /&gt;
     if a &amp;lt; 10 {&lt;br /&gt;
         println!(&amp;quot;la expresión es verdadera&amp;quot;);&lt;br /&gt;
     }else {&lt;br /&gt;
         println!(&amp;quot;la exprexión es false&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La expresión a evaluar debe ser de tipo &amp;lt;code&amp;gt;bool&amp;lt;/code&amp;gt;, de lo contrario producirá un &lt;br /&gt;
El &amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt; es opcional.&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Main_Page&amp;diff=123</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Main_Page&amp;diff=123"/>
		<updated>2021-02-12T03:40:00Z</updated>

		<summary type="html">&lt;p&gt;Lochi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;Tutorial de Rust&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
# [[¿Qué es Rust?]]&lt;br /&gt;
# [[Instalación]]&lt;br /&gt;
## [[Herramientas de edición de código]]&lt;br /&gt;
### [[Visual Studio Code]]&lt;br /&gt;
# [[Mi primer programa: Hola mundo]]&lt;br /&gt;
# [[Cargo]]&lt;br /&gt;
&lt;br /&gt;
=Conceptos importantes en Rust=&lt;br /&gt;
#[[Comentarios]]&lt;br /&gt;
#[[Variables]]&lt;br /&gt;
#[[Tipos de datos]]&lt;br /&gt;
#[[Funciones]]&lt;br /&gt;
#[[Control de flujo de ejecución]]&lt;br /&gt;
&lt;br /&gt;
=Errores=&lt;br /&gt;
* [[:Category:Errores|Errores comunes]]&lt;br /&gt;
** [[Errores de instalación]]&lt;br /&gt;
** [[Errores de compilación]]&lt;br /&gt;
** [[Errores de ejecución]]&lt;br /&gt;
&lt;br /&gt;
=Advertencias=&lt;br /&gt;
* [[:Category:Advertencias|Advertencias comunes]]&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Category:Advertencias&amp;diff=122</id>
		<title>Category:Advertencias</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Category:Advertencias&amp;diff=122"/>
		<updated>2021-02-12T03:38:53Z</updated>

		<summary type="html">&lt;p&gt;Lochi: /* Advertencias Comunes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Advertencias Comunes=&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;warning: unused variable &amp;lt;/code&amp;gt;&lt;br /&gt;
Esto ocurre cuando se declara una variable pero no se utiliza del todo. Puede ser porque:&lt;br /&gt;
&lt;br /&gt;
#En realidad es una variable sin utilizar.&lt;br /&gt;
#Se escribió mal el identificador de la variable. Esto también produciría un error [[Errores_de_compilación#Error_en_identificadores_de_variables|E0425]] pues se estaría usando la variable que no fue declarada.&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Category:Advertencias&amp;diff=121</id>
		<title>Category:Advertencias</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Category:Advertencias&amp;diff=121"/>
		<updated>2021-02-12T03:37:06Z</updated>

		<summary type="html">&lt;p&gt;Lochi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Advertencias Comunes=&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;warning: unused variable &amp;lt;/code&amp;gt;&lt;br /&gt;
Esto ocurre cuando se declara una variable pero no se utiliza del todo. Puede ser porque:&lt;br /&gt;
** En realidad es una variable sin utilizar&lt;br /&gt;
** Se escribió mal el identificador de la variable. Esto también produciría un error [[Errores_de_compilación#Error_en_identificadores_de_variables|E0425]] pues se estaría usando la variable que no fue declarada.&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Category:Advertencias&amp;diff=120</id>
		<title>Category:Advertencias</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Category:Advertencias&amp;diff=120"/>
		<updated>2021-02-12T03:36:24Z</updated>

		<summary type="html">&lt;p&gt;Lochi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Advertencias Comunes=&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;warning: unused variable &amp;lt;/code&amp;gt;&lt;br /&gt;
Esto ocurre cuando se declara una variable pero no se utiliza del todo. Puede ser porque:&lt;br /&gt;
** En realidad es una variable sin utilizar&lt;br /&gt;
** Se escribió mal el identificador de la variable. Esto también produciría un error [[:Category:Errores#Error_en_identificadores_de_variables|E0425]] pues se estaría usando la variable que no fue declarada.&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Category:Advertencias&amp;diff=119</id>
		<title>Category:Advertencias</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Category:Advertencias&amp;diff=119"/>
		<updated>2021-02-12T03:35:44Z</updated>

		<summary type="html">&lt;p&gt;Lochi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Advertencias Comunes=&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;warning: unused variable &amp;lt;/code&amp;gt;&lt;br /&gt;
Esto ocurre cuando se declara una variable pero no se utiliza del todo. Puede ser porque:&lt;br /&gt;
** En realidad es una variable sin utilizar&lt;br /&gt;
** Se escribió mal el identificador de la variable. Esto también produciría un error [[:Category:Errores]] pues se estaría usando la variable que no fue declarada.&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Category:Advertencias&amp;diff=118</id>
		<title>Category:Advertencias</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Category:Advertencias&amp;diff=118"/>
		<updated>2021-02-12T03:35:31Z</updated>

		<summary type="html">&lt;p&gt;Lochi: /* Advertencias Comunes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Advertencias Comunes=&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;warning: unused variable &amp;lt;/code&amp;gt;&lt;br /&gt;
Esto ocurre cuando se declara una variable pero no se utiliza del todo. Puede ser porque:&lt;br /&gt;
** En realidad es una variable sin utilizar&lt;br /&gt;
** Se escribió mal el identificador de la variable. Esto también produciría un error [[Category:Errores]] pues se estaría usando la variable que no fue declarada.&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Category:Advertencias&amp;diff=117</id>
		<title>Category:Advertencias</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Category:Advertencias&amp;diff=117"/>
		<updated>2021-02-12T03:34:58Z</updated>

		<summary type="html">&lt;p&gt;Lochi: /* Advertencias Comunes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Advertencias Comunes=&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;warning: unused variable &amp;lt;/code&amp;gt;&lt;br /&gt;
Esto ocurre cuando se declara una variable pero no se utiliza del todo. Puede ser porque:&lt;br /&gt;
** En realidad es una variable sin utilizar&lt;br /&gt;
** Se escribió mal el identificador de la variable. Esto también produciría un error [[Category:Errores|E0425]] pues se estaría usando la variable que no fue declarada.&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Category:Advertencias&amp;diff=116</id>
		<title>Category:Advertencias</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Category:Advertencias&amp;diff=116"/>
		<updated>2021-02-12T03:34:11Z</updated>

		<summary type="html">&lt;p&gt;Lochi: /* Advertencias Comunes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Advertencias Comunes=&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;warning: unused variable &amp;lt;/code&amp;gt;&lt;br /&gt;
Esto ocurre cuando se declara una variable pero no se utiliza del todo. Puede ser porque:&lt;br /&gt;
** En realidad es una variable sin utilizar&lt;br /&gt;
** Se escribió mal el identificador de la variable. Esto también produciría un error [[Category:Errores#Errores _en_identificadores_de_variables|E0425]] pues se estaría usando la variable que no fue declarada.&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Category:Advertencias&amp;diff=115</id>
		<title>Category:Advertencias</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Category:Advertencias&amp;diff=115"/>
		<updated>2021-02-12T03:30:49Z</updated>

		<summary type="html">&lt;p&gt;Lochi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Advertencias Comunes=&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;warning: unused variable &amp;lt;/code&amp;gt;&lt;br /&gt;
Esto ocurre cuando se declara una variable pero no se utiliza del todo. Puede ser porque:&lt;br /&gt;
** En realidad es una variable sin utilizar&lt;br /&gt;
** Se escribió mal el identificador de la variable. Esto también produciría un error E0425 pues se estaría usando la variable que no fue declarada.&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Category:Advertencias&amp;diff=114</id>
		<title>Category:Advertencias</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Category:Advertencias&amp;diff=114"/>
		<updated>2021-02-12T03:27:37Z</updated>

		<summary type="html">&lt;p&gt;Lochi: Created page with &amp;quot;=Advertencias Comunes=&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Advertencias Comunes=&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Main_Page&amp;diff=113</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Main_Page&amp;diff=113"/>
		<updated>2021-02-12T03:27:15Z</updated>

		<summary type="html">&lt;p&gt;Lochi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;Tutorial de Rust&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
# [[¿Qué es Rust?]]&lt;br /&gt;
# [[Instalación]]&lt;br /&gt;
## [[Herramientas de edición de código]]&lt;br /&gt;
### [[Visual Studio Code]]&lt;br /&gt;
# [[Mi primer programa: Hola mundo]]&lt;br /&gt;
# [[Cargo]]&lt;br /&gt;
&lt;br /&gt;
=Conceptos importantes en Rust=&lt;br /&gt;
#[[Comentarios]]&lt;br /&gt;
#[[Variables]]&lt;br /&gt;
#[[Tipos de datos]]&lt;br /&gt;
#[[Funciones]]&lt;br /&gt;
#[[Control de flujo de ejecución]]&lt;br /&gt;
&lt;br /&gt;
=Errores=&lt;br /&gt;
* [[:Category:Errores|Errores comunes]]&lt;br /&gt;
** [[Errores de instalación]]&lt;br /&gt;
** [[Errores de compilación]]&lt;br /&gt;
** [[Errores de ejecución]]&lt;br /&gt;
&lt;br /&gt;
=Advertencias=&lt;br /&gt;
* [[:Category:Advertencias|Advertencias comunes]]&lt;br /&gt;
&lt;br /&gt;
Consult the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents User's Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki]&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Comentarios&amp;diff=112</id>
		<title>Comentarios</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Comentarios&amp;diff=112"/>
		<updated>2021-02-12T03:23:41Z</updated>

		<summary type="html">&lt;p&gt;Lochi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Por línea=&lt;br /&gt;
Todo caracter luego de &amp;lt;code&amp;gt;//&amp;lt;/code&amp;gt; se considera un comentario y se ignora.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
    let a=3; //esto se ignora&lt;br /&gt;
//esto también&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Varias líneas=&lt;br /&gt;
Si se desea agregar varias líneas de comentarios (o hacer que el compilador ignore varias líneas de código), se puede usar &amp;lt;code&amp;gt;/*&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;*/&amp;lt;/code&amp;gt;. Todo lo que se encuentre entre ambas es ignorado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
    let a=3; /*esto se ignora*/&lt;br /&gt;
/*&lt;br /&gt;
    esto también es ignorado&lt;br /&gt;
    let b=4; incluyendo esta línea&lt;br /&gt;
&lt;br /&gt;
*/&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Comentarios&amp;diff=111</id>
		<title>Comentarios</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Comentarios&amp;diff=111"/>
		<updated>2021-02-12T03:20:55Z</updated>

		<summary type="html">&lt;p&gt;Lochi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Por línea=&lt;br /&gt;
Todo caracter luego de &amp;lt;code&amp;gt;//&amp;lt;/code&amp;gt; se considera un comentario y se ignora.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
    let a=3; //esto se ignora&lt;br /&gt;
//esto también&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Main_Page&amp;diff=109</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Main_Page&amp;diff=109"/>
		<updated>2021-02-08T03:09:01Z</updated>

		<summary type="html">&lt;p&gt;Lochi: /* Conceptos importantes en Rust */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;Tutorial de Rust&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
# [[¿Qué es Rust?]]&lt;br /&gt;
# [[Instalación]]&lt;br /&gt;
## [[Herramientas de edición de código]]&lt;br /&gt;
### [[Visual Studio Code]]&lt;br /&gt;
# [[Mi primer programa: Hola mundo]]&lt;br /&gt;
# [[Cargo]]&lt;br /&gt;
&lt;br /&gt;
=Conceptos importantes en Rust=&lt;br /&gt;
#[[Comentarios]]&lt;br /&gt;
#[[Variables]]&lt;br /&gt;
#[[Tipos de datos]]&lt;br /&gt;
#[[Funciones]]&lt;br /&gt;
#[[Control de flujo de ejecución]]&lt;br /&gt;
&lt;br /&gt;
=Errores=&lt;br /&gt;
* [[:Category:Errores|Errores comunes]]&lt;br /&gt;
** [[Errores de instalación]]&lt;br /&gt;
** [[Errores de compilación]]&lt;br /&gt;
** [[Errores de ejecución]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Consult the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents User's Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki]&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Funciones&amp;diff=108</id>
		<title>Funciones</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Funciones&amp;diff=108"/>
		<updated>2021-02-08T03:08:14Z</updated>

		<summary type="html">&lt;p&gt;Lochi: /* Retorno de valores */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
===main===&lt;br /&gt;
Main es la función principal de un programa de Rust: es su punto de inicio o entrada. &lt;br /&gt;
&lt;br /&gt;
Rust utiliza la convención [[snake case]] para nombrar identificadores de funciones y variables.&lt;br /&gt;
&lt;br /&gt;
Las definiciones de Rust empiezan con &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; y tienen un conjunto de paréntesis y llaves para indicar el inicio y final del cuerpo de la función.&lt;br /&gt;
&lt;br /&gt;
A diferencia de otros lenguajes, Rust solo necesita que una función esté definida en algún lugar del código fuente, no necesita estar antes o después del lugar donde se le invoca.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn una_funcion(){&lt;br /&gt;
    println!(&amp;quot;Otro hola!&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Parámetros=&lt;br /&gt;
Los parámetros o argumentos son las variables especiales que son parte de la función.&lt;br /&gt;
&lt;br /&gt;
Una función, al invocar a otra, puede pasarle valores como en este ejemplo:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
    una_funcion(10);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
fn una_funcion(a: i32){&lt;br /&gt;
    println!(&amp;quot;El valor obtenido es {}&amp;quot;,a);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se puede agregar más funciones, agregando identificadores de variables y tipos, separados por comas.&lt;br /&gt;
&lt;br /&gt;
=Retorno de valores=&lt;br /&gt;
Las funciones puede devolver valores, declarando el tipo y usando una flecha &amp;lt;code&amp;gt;-&amp;gt;&amp;lt;/code&amp;gt;. El valor que se devolverá es la última expressión en el cuerpo de la función. Se puede usar &amp;lt;code&amp;gt;return&amp;lt;/code&amp;gt; si se desea devolver antes del final.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn cinco() -&amp;gt; i32 {&lt;br /&gt;
     5&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
fn main() {&lt;br /&gt;
    let a = cinco();&lt;br /&gt;
    println!(&amp;quot;El valor de a es: {}&amp;quot;, a);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si se desea pasar parámetros además de recibir algo devuelta de la función, se le agregarían las variables entre los paréntesis como es usual, antes de la flecha.&lt;br /&gt;
&lt;br /&gt;
Acá hay que tener cuidado si se va a devolver un valor al final de una función: si se pone un punto y coma al final del 5 (en la función arriba), se producirá un [[Errores_de_compilación#Errores_en_el_uso_de_las_variables|error 308]], pues se estará convirtiendo una expresión (&amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;) en una declaración (&amp;lt;code&amp;gt;5;&amp;lt;/code&amp;gt;);&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Funciones&amp;diff=107</id>
		<title>Funciones</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Funciones&amp;diff=107"/>
		<updated>2021-02-08T03:05:53Z</updated>

		<summary type="html">&lt;p&gt;Lochi: /* Retorno de valores */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
===main===&lt;br /&gt;
Main es la función principal de un programa de Rust: es su punto de inicio o entrada. &lt;br /&gt;
&lt;br /&gt;
Rust utiliza la convención [[snake case]] para nombrar identificadores de funciones y variables.&lt;br /&gt;
&lt;br /&gt;
Las definiciones de Rust empiezan con &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; y tienen un conjunto de paréntesis y llaves para indicar el inicio y final del cuerpo de la función.&lt;br /&gt;
&lt;br /&gt;
A diferencia de otros lenguajes, Rust solo necesita que una función esté definida en algún lugar del código fuente, no necesita estar antes o después del lugar donde se le invoca.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn una_funcion(){&lt;br /&gt;
    println!(&amp;quot;Otro hola!&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Parámetros=&lt;br /&gt;
Los parámetros o argumentos son las variables especiales que son parte de la función.&lt;br /&gt;
&lt;br /&gt;
Una función, al invocar a otra, puede pasarle valores como en este ejemplo:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
    una_funcion(10);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
fn una_funcion(a: i32){&lt;br /&gt;
    println!(&amp;quot;El valor obtenido es {}&amp;quot;,a);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se puede agregar más funciones, agregando identificadores de variables y tipos, separados por comas.&lt;br /&gt;
&lt;br /&gt;
=Retorno de valores=&lt;br /&gt;
Las funciones puede devolver valores, declarando el tipo y usando una flecha &amp;lt;code&amp;gt;-&amp;gt;&amp;lt;/code&amp;gt;. El valor que se devolverá es la última expressión en el cuerpo de la función. Se puede usar &amp;lt;code&amp;gt;return&amp;lt;/code&amp;gt; si se desea devolver antes del final.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn cinco() -&amp;gt; i32 {&lt;br /&gt;
     5&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
fn main() {&lt;br /&gt;
    let a = cinco();&lt;br /&gt;
    println!(&amp;quot;El valor de a es: {}&amp;quot;, a);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si se desea pasar parámetros además de recibir algo devuelta de la función, se le agregarían las variables entre los paréntesis como es usual, antes de la flecha.&lt;br /&gt;
&lt;br /&gt;
Acá hay que tener cuidado si se va a devolver un valor al final de una función: si se pone un punto y coma al final del 5 (en la función arriba), se producirá un [[Errores_de_compilación#Errores_en_el_uso_de_las_variables]]&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Errores_de_compilaci%C3%B3n&amp;diff=106</id>
		<title>Errores de compilación</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Errores_de_compilaci%C3%B3n&amp;diff=106"/>
		<updated>2021-02-08T03:04:01Z</updated>

		<summary type="html">&lt;p&gt;Lochi: /* Errores en el uso de las variables */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Errores]]&lt;br /&gt;
&lt;br /&gt;
=Errores en identificadores de variables=&lt;br /&gt;
&amp;lt;code&amp;gt;error[E0425]: cannot find value `x` in this scope&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Significa que estás usando una variable que no está definida. Causas probables:&lt;br /&gt;
#Escribiste mal el identificador de la variable (x en este caso).&lt;br /&gt;
#Escribiste mal el identificador en la definición de la variable original.&lt;br /&gt;
&lt;br /&gt;
=Errores en caracteres=&lt;br /&gt;
&amp;lt;code&amp;gt;error[E0658]: non-ascii idents are not fully supported&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Significa que hay un caracter no válido en algún identificador:&lt;br /&gt;
#En tu código hay alguna tilde o ñ.&lt;br /&gt;
&lt;br /&gt;
=Errores en el uso de las variables=&lt;br /&gt;
&amp;lt;code&amp;gt;error[E0282]: type annotations needed&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Significa que estás definiendo el compilador requiere más información de qué tipo queremos usar.&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;code&amp;gt;error[E0308]: mismatched types&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Significa que en la asignación de un valor a una variable, estás usando dos tipos diferentes de datos.&lt;br /&gt;
#Se esperaba una expresión en vez de una declaración, como cuando se pone un punto y coma (;) al final de una expresión que iba a ser devuelta por una función.&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;code&amp;gt;error[E0384]: cannot assign twice to immutable variable&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Significa que trataste de reasignar un valor a una variable que es inmutable:&lt;br /&gt;
#Se te olvidó definir una variable como mutable &amp;lt;code&amp;gt;mut&amp;lt;/code&amp;gt;.&lt;br /&gt;
#Hay dos variables con los nombres parecidos, uno mutable y otro inmutable, y te referistes a la variable equivocada.&lt;br /&gt;
----&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Funciones&amp;diff=105</id>
		<title>Funciones</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Funciones&amp;diff=105"/>
		<updated>2021-02-08T03:01:44Z</updated>

		<summary type="html">&lt;p&gt;Lochi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
===main===&lt;br /&gt;
Main es la función principal de un programa de Rust: es su punto de inicio o entrada. &lt;br /&gt;
&lt;br /&gt;
Rust utiliza la convención [[snake case]] para nombrar identificadores de funciones y variables.&lt;br /&gt;
&lt;br /&gt;
Las definiciones de Rust empiezan con &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; y tienen un conjunto de paréntesis y llaves para indicar el inicio y final del cuerpo de la función.&lt;br /&gt;
&lt;br /&gt;
A diferencia de otros lenguajes, Rust solo necesita que una función esté definida en algún lugar del código fuente, no necesita estar antes o después del lugar donde se le invoca.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn una_funcion(){&lt;br /&gt;
    println!(&amp;quot;Otro hola!&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Parámetros=&lt;br /&gt;
Los parámetros o argumentos son las variables especiales que son parte de la función.&lt;br /&gt;
&lt;br /&gt;
Una función, al invocar a otra, puede pasarle valores como en este ejemplo:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
    una_funcion(10);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
fn una_funcion(a: i32){&lt;br /&gt;
    println!(&amp;quot;El valor obtenido es {}&amp;quot;,a);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se puede agregar más funciones, agregando identificadores de variables y tipos, separados por comas.&lt;br /&gt;
&lt;br /&gt;
=Retorno de valores=&lt;br /&gt;
Las funciones puede devolver valores, declarando el tipo y usando una flecha &amp;lt;code&amp;gt;-&amp;gt;&amp;lt;/code&amp;gt;. El valor que se devolverá es la última expressión en el cuerpo de la función. Se puede usar &amp;lt;code&amp;gt;return&amp;lt;/code&amp;gt; si se desea devolver antes del final.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn cinco() -&amp;gt; i32 {&lt;br /&gt;
     5&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
fn main() {&lt;br /&gt;
    let a = cinco();&lt;br /&gt;
    println!(&amp;quot;El valor de a es: {}&amp;quot;, a);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si se desea pasar parámetros además de recibir algo devuelta de la función, se le agregarían las variables entre los paréntesis como es usual, antes de la flecha.&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Funciones&amp;diff=104</id>
		<title>Funciones</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Funciones&amp;diff=104"/>
		<updated>2021-02-08T02:50:27Z</updated>

		<summary type="html">&lt;p&gt;Lochi: /* Parámetros */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
===main===&lt;br /&gt;
Main es la función principal de un programa de Rust: es su punto de inicio o entrada. &lt;br /&gt;
&lt;br /&gt;
Rust utiliza la convención [[snake case]] para nombrar identificadores de funciones y variables.&lt;br /&gt;
&lt;br /&gt;
Las definiciones de Rust empiezan con &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; y tienen un conjunto de paréntesis y llaves para indicar el inicio y final del cuerpo de la función.&lt;br /&gt;
&lt;br /&gt;
A diferencia de otros lenguajes, Rust solo necesita que una función esté definida en algún lugar del código fuente, no necesita estar antes o después del lugar donde se le invoca.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn una_funcion(){&lt;br /&gt;
    println!(&amp;quot;Otro hola!&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Parámetros=&lt;br /&gt;
Los parámetros o argumentos son las variables especiales que son parte de la función.&lt;br /&gt;
&lt;br /&gt;
Una función, al invocar a otra, puede pasarle valores como en este ejemplo:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
    una_funcion(10);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
fn una_funcion(a: i32){&lt;br /&gt;
    println!(&amp;quot;El valor obtenido es {}&amp;quot;,a);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se puede agregar más funciones, agregando identificadores de variables y tipos, separados por comas.&lt;br /&gt;
&lt;br /&gt;
=Cuerpo de las funciones=&lt;br /&gt;
&lt;br /&gt;
=Retorno de valores=&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Tipos_de_datos&amp;diff=103</id>
		<title>Tipos de datos</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Tipos_de_datos&amp;diff=103"/>
		<updated>2021-02-06T04:10:45Z</updated>

		<summary type="html">&lt;p&gt;Lochi: /* Arreglos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Todo valor en Rust es de un tipo específico. Rust necesita saber ese tipo al momento de compilar el programa, y muchas veces puede inferir el tipo. En otras ocasiones debemos indicarlo explícitamente, y si no lo hacemos produciremos un [[Errores_de_compilación#Errores_en_el_uso_de_las_variables|error]] de compilación.&lt;br /&gt;
&lt;br /&gt;
Hay dos categorías:&lt;br /&gt;
==Escalares==&lt;br /&gt;
Un tipo escalar representa un valor único, y existen cuatro tipos escalares: enteros, punto flotantes, booleanos, y caracteres. &lt;br /&gt;
===Enteros===&lt;br /&gt;
Un entero es un número sin una parte fraccional. Pueden tener signo o no, y ser de 8 a 128 bits. Si tiene signos, el tipo empieza con i y si no tiene signo empieza con u.&lt;br /&gt;
&lt;br /&gt;
====Tamaños y signo====&lt;br /&gt;
El tipo empieza con i y u, y continúa con el tamaño en bits, desde 8 hasta 128 bits: i8, u8, i16, u16, y así sucesivamente hasta i128 y u128.&lt;br /&gt;
&lt;br /&gt;
Se usa [[complemento a dos]] para representar los números negativos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Punto flotante===&lt;br /&gt;
Hay dos tipos primitivos de [[punto flotante]]: f32 (32 bits, precisión simple) y f64 (64 bits, doble precisión). Si no se especifica el tipo, se asume por defecto que es f64. Se usa el estándar [[IEEE-754]] de punto flotante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
    let pi = 3.14; // se asume tipo f64&lt;br /&gt;
    let as: f32 = 3.14; // esta variable es de tipo f32&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Booleanos===&lt;br /&gt;
Una variable booleana puede ser o &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; o &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;, y ocupa un byte de almacenamiento.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
    let bandera = true;&lt;br /&gt;
    let otra_bandera: bool = false;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
===Caracteres===&lt;br /&gt;
Para almacenar letras, se puede usar &amp;lt;code&amp;gt;char&amp;lt;/code&amp;gt;, y se define con comilla única (no doble comilla o comillas que son para las cadenas de caracteres). Los caracteres ocupan 4 bytes de almacenamiento.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
    let p = 'p';&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compuestos==&lt;br /&gt;
Los tipos compuestos agrupan varios valores en un sólo tipo. Existen dos: tuples y arreglos.&lt;br /&gt;
===Tuples===&lt;br /&gt;
Agrupan diferentes tipos en un sólo tipo compuesto. Tienen un tamaño definido: no se pueden modificar de tamaño una vez creados.&lt;br /&gt;
&lt;br /&gt;
Se crean usando paréntesis y separando la lista de valores con comas. Cada posición es un tipo, y no necesitan ser iguales.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
     let tuple: (i32, char) = (12,'d');&lt;br /&gt;
     println!(&amp;quot;El valor es {}&amp;quot;,tuple.1);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La salida del programa sería &amp;lt;code&amp;gt;d&amp;lt;/code&amp;gt;. (&amp;lt;code&amp;gt;tuple.0&amp;lt;/code&amp;gt; se refiere al i32, y &amp;lt;code&amp;gt;tuple.1&amp;lt;/code&amp;gt; al caracter).&lt;br /&gt;
&lt;br /&gt;
Otra forma es asignar parte de ese tuple a una variable, de la siguiente manera:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
     let tuple: (i32, char) = (12,'d');&lt;br /&gt;
     let (a,b)=tuple;&lt;br /&gt;
     println!(&amp;quot;El valor es {}&amp;quot;,b);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Arreglos===&lt;br /&gt;
En los arreglos, todos los valores deben ser del mismo tipo, y deben tener un tamaño fijo. En este ejemplo, el arreglo a tiene 3 valores:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
    let a = [0,1,2];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los arreglos se definen estáticamente, por lo que están en el [[stack]] y no en el [[heap]]. Si se desea algo dinámico, se puede usar un &amp;lt;code&amp;gt;vector&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Si se desea explicitar el tipo y el número de elemento se haría:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
    let a: [i32;3] = [0,1,2];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si quieres inicializar todo un arreglo con un mismo valor puedes hacer esto:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
    let a = [5;10]; //esto inicializa con 10 elementos con un valor de 5.&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los elementos de un arreglo se accesan de la misma forma que en otros lenguajes: &amp;lt;code&amp;gt;a[0]&amp;lt;/code&amp;gt; accesa su primer elemento, y así sucesivamente.&lt;br /&gt;
&lt;br /&gt;
====Arreglos bidimensionales====&lt;br /&gt;
Se pueden definir explícitamente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
     let mut state = [[0,0],[0,1]];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También se pueden definir de esta forma, un arreglo de 8 por 16:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
    let mut arreglo: [[i32; 16]; 8];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Tipos_de_datos&amp;diff=102</id>
		<title>Tipos de datos</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Tipos_de_datos&amp;diff=102"/>
		<updated>2021-02-05T02:32:41Z</updated>

		<summary type="html">&lt;p&gt;Lochi: /* Arreglos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Todo valor en Rust es de un tipo específico. Rust necesita saber ese tipo al momento de compilar el programa, y muchas veces puede inferir el tipo. En otras ocasiones debemos indicarlo explícitamente, y si no lo hacemos produciremos un [[Errores_de_compilación#Errores_en_el_uso_de_las_variables|error]] de compilación.&lt;br /&gt;
&lt;br /&gt;
Hay dos categorías:&lt;br /&gt;
==Escalares==&lt;br /&gt;
Un tipo escalar representa un valor único, y existen cuatro tipos escalares: enteros, punto flotantes, booleanos, y caracteres. &lt;br /&gt;
===Enteros===&lt;br /&gt;
Un entero es un número sin una parte fraccional. Pueden tener signo o no, y ser de 8 a 128 bits. Si tiene signos, el tipo empieza con i y si no tiene signo empieza con u.&lt;br /&gt;
&lt;br /&gt;
====Tamaños y signo====&lt;br /&gt;
El tipo empieza con i y u, y continúa con el tamaño en bits, desde 8 hasta 128 bits: i8, u8, i16, u16, y así sucesivamente hasta i128 y u128.&lt;br /&gt;
&lt;br /&gt;
Se usa [[complemento a dos]] para representar los números negativos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Punto flotante===&lt;br /&gt;
Hay dos tipos primitivos de [[punto flotante]]: f32 (32 bits, precisión simple) y f64 (64 bits, doble precisión). Si no se especifica el tipo, se asume por defecto que es f64. Se usa el estándar [[IEEE-754]] de punto flotante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
    let pi = 3.14; // se asume tipo f64&lt;br /&gt;
    let as: f32 = 3.14; // esta variable es de tipo f32&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Booleanos===&lt;br /&gt;
Una variable booleana puede ser o &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; o &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;, y ocupa un byte de almacenamiento.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
    let bandera = true;&lt;br /&gt;
    let otra_bandera: bool = false;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
===Caracteres===&lt;br /&gt;
Para almacenar letras, se puede usar &amp;lt;code&amp;gt;char&amp;lt;/code&amp;gt;, y se define con comilla única (no doble comilla o comillas que son para las cadenas de caracteres). Los caracteres ocupan 4 bytes de almacenamiento.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
    let p = 'p';&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compuestos==&lt;br /&gt;
Los tipos compuestos agrupan varios valores en un sólo tipo. Existen dos: tuples y arreglos.&lt;br /&gt;
===Tuples===&lt;br /&gt;
Agrupan diferentes tipos en un sólo tipo compuesto. Tienen un tamaño definido: no se pueden modificar de tamaño una vez creados.&lt;br /&gt;
&lt;br /&gt;
Se crean usando paréntesis y separando la lista de valores con comas. Cada posición es un tipo, y no necesitan ser iguales.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
     let tuple: (i32, char) = (12,'d');&lt;br /&gt;
     println!(&amp;quot;El valor es {}&amp;quot;,tuple.1);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La salida del programa sería &amp;lt;code&amp;gt;d&amp;lt;/code&amp;gt;. (&amp;lt;code&amp;gt;tuple.0&amp;lt;/code&amp;gt; se refiere al i32, y &amp;lt;code&amp;gt;tuple.1&amp;lt;/code&amp;gt; al caracter).&lt;br /&gt;
&lt;br /&gt;
Otra forma es asignar parte de ese tuple a una variable, de la siguiente manera:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
     let tuple: (i32, char) = (12,'d');&lt;br /&gt;
     let (a,b)=tuple;&lt;br /&gt;
     println!(&amp;quot;El valor es {}&amp;quot;,b);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Arreglos===&lt;br /&gt;
En los arreglos, todos los valores deben ser del mismo tipo, y deben tener un tamaño fijo. En este ejemplo, el arreglo a tiene 3 valores:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
    let a = [0,1,2];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los arreglos se definen estáticamente, por lo que están en el [[stack]] y no en el [[heap]]. Si se desea algo dinámico, se puede usar un &amp;lt;code&amp;gt;vector&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Si se desea explicitar el tipo y el número de elemento se haría:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
    let a: [i32;3] = [0,1,2];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si quieres inicializar todo un arreglo con un mismo valor puedes hacer esto:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
    let a = [5;10]; //esto inicializa con 10 elementos con un valor de 5.&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los elementos de un arreglo se accesan de la misma forma que en otros lenguajes: &amp;lt;code&amp;gt;a[0]&amp;lt;/code&amp;gt; accesa su primer elemento, y así sucesivamente.&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Tipos_de_datos&amp;diff=101</id>
		<title>Tipos de datos</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Tipos_de_datos&amp;diff=101"/>
		<updated>2021-02-05T01:57:21Z</updated>

		<summary type="html">&lt;p&gt;Lochi: /* Compuestos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Todo valor en Rust es de un tipo específico. Rust necesita saber ese tipo al momento de compilar el programa, y muchas veces puede inferir el tipo. En otras ocasiones debemos indicarlo explícitamente, y si no lo hacemos produciremos un [[Errores_de_compilación#Errores_en_el_uso_de_las_variables|error]] de compilación.&lt;br /&gt;
&lt;br /&gt;
Hay dos categorías:&lt;br /&gt;
==Escalares==&lt;br /&gt;
Un tipo escalar representa un valor único, y existen cuatro tipos escalares: enteros, punto flotantes, booleanos, y caracteres. &lt;br /&gt;
===Enteros===&lt;br /&gt;
Un entero es un número sin una parte fraccional. Pueden tener signo o no, y ser de 8 a 128 bits. Si tiene signos, el tipo empieza con i y si no tiene signo empieza con u.&lt;br /&gt;
&lt;br /&gt;
====Tamaños y signo====&lt;br /&gt;
El tipo empieza con i y u, y continúa con el tamaño en bits, desde 8 hasta 128 bits: i8, u8, i16, u16, y así sucesivamente hasta i128 y u128.&lt;br /&gt;
&lt;br /&gt;
Se usa [[complemento a dos]] para representar los números negativos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Punto flotante===&lt;br /&gt;
Hay dos tipos primitivos de [[punto flotante]]: f32 (32 bits, precisión simple) y f64 (64 bits, doble precisión). Si no se especifica el tipo, se asume por defecto que es f64. Se usa el estándar [[IEEE-754]] de punto flotante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
    let pi = 3.14; // se asume tipo f64&lt;br /&gt;
    let as: f32 = 3.14; // esta variable es de tipo f32&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Booleanos===&lt;br /&gt;
Una variable booleana puede ser o &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; o &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;, y ocupa un byte de almacenamiento.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
    let bandera = true;&lt;br /&gt;
    let otra_bandera: bool = false;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
===Caracteres===&lt;br /&gt;
Para almacenar letras, se puede usar &amp;lt;code&amp;gt;char&amp;lt;/code&amp;gt;, y se define con comilla única (no doble comilla o comillas que son para las cadenas de caracteres). Los caracteres ocupan 4 bytes de almacenamiento.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
    let p = 'p';&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compuestos==&lt;br /&gt;
Los tipos compuestos agrupan varios valores en un sólo tipo. Existen dos: tuples y arreglos.&lt;br /&gt;
===Tuples===&lt;br /&gt;
Agrupan diferentes tipos en un sólo tipo compuesto. Tienen un tamaño definido: no se pueden modificar de tamaño una vez creados.&lt;br /&gt;
&lt;br /&gt;
Se crean usando paréntesis y separando la lista de valores con comas. Cada posición es un tipo, y no necesitan ser iguales.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
     let tuple: (i32, char) = (12,'d');&lt;br /&gt;
     println!(&amp;quot;El valor es {}&amp;quot;,tuple.1);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La salida del programa sería &amp;lt;code&amp;gt;d&amp;lt;/code&amp;gt;. (&amp;lt;code&amp;gt;tuple.0&amp;lt;/code&amp;gt; se refiere al i32, y &amp;lt;code&amp;gt;tuple.1&amp;lt;/code&amp;gt; al caracter).&lt;br /&gt;
&lt;br /&gt;
Otra forma es asignar parte de ese tuple a una variable, de la siguiente manera:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
     let tuple: (i32, char) = (12,'d');&lt;br /&gt;
     let (a,b)=tuple;&lt;br /&gt;
     println!(&amp;quot;El valor es {}&amp;quot;,b);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Arreglos===&lt;br /&gt;
En los arreglos, todos los valores deben ser del mismo tipo, y deben tener un tamaño fijo. En este ejemplo, el arreglo a tiene 3 valores:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
    let a = [0,1,2];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los arreglos se definen estáticamente, por lo que están en el [[stack]] y no en el [[heap]]. Si se desea algo dinámico, se puede usar un &amp;lt;code&amp;gt;vector&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Si se desea explicitar el tipo y el número de elemento se haría:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
    let a: [i32;3] = [0,1,2];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Tipos_de_datos&amp;diff=100</id>
		<title>Tipos de datos</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Tipos_de_datos&amp;diff=100"/>
		<updated>2021-02-04T03:29:25Z</updated>

		<summary type="html">&lt;p&gt;Lochi: /* Compuestos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Todo valor en Rust es de un tipo específico. Rust necesita saber ese tipo al momento de compilar el programa, y muchas veces puede inferir el tipo. En otras ocasiones debemos indicarlo explícitamente, y si no lo hacemos produciremos un [[Errores_de_compilación#Errores_en_el_uso_de_las_variables|error]] de compilación.&lt;br /&gt;
&lt;br /&gt;
Hay dos categorías:&lt;br /&gt;
==Escalares==&lt;br /&gt;
Un tipo escalar representa un valor único, y existen cuatro tipos escalares: enteros, punto flotantes, booleanos, y caracteres. &lt;br /&gt;
===Enteros===&lt;br /&gt;
Un entero es un número sin una parte fraccional. Pueden tener signo o no, y ser de 8 a 128 bits. Si tiene signos, el tipo empieza con i y si no tiene signo empieza con u.&lt;br /&gt;
&lt;br /&gt;
====Tamaños y signo====&lt;br /&gt;
El tipo empieza con i y u, y continúa con el tamaño en bits, desde 8 hasta 128 bits: i8, u8, i16, u16, y así sucesivamente hasta i128 y u128.&lt;br /&gt;
&lt;br /&gt;
Se usa [[complemento a dos]] para representar los números negativos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Punto flotante===&lt;br /&gt;
Hay dos tipos primitivos de [[punto flotante]]: f32 (32 bits, precisión simple) y f64 (64 bits, doble precisión). Si no se especifica el tipo, se asume por defecto que es f64. Se usa el estándar [[IEEE-754]] de punto flotante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
    let pi = 3.14; // se asume tipo f64&lt;br /&gt;
    let as: f32 = 3.14; // esta variable es de tipo f32&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Booleanos===&lt;br /&gt;
Una variable booleana puede ser o &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; o &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;, y ocupa un byte de almacenamiento.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
    let bandera = true;&lt;br /&gt;
    let otra_bandera: bool = false;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
===Caracteres===&lt;br /&gt;
Para almacenar letras, se puede usar &amp;lt;code&amp;gt;char&amp;lt;/code&amp;gt;, y se define con comilla única (no doble comilla o comillas que son para las cadenas de caracteres). Los caracteres ocupan 4 bytes de almacenamiento.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
    let p = 'p';&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compuestos==&lt;br /&gt;
Los tipos compuestos agrupan varios valores en un sólo tipo. Existen dos: tuples y arreglos.&lt;br /&gt;
===Tuples===&lt;br /&gt;
Agrupan diferentes tipos en un sólo tipo compuesto. Tienen un tamaño definido: no se pueden modificar de tamaño una vez creados.&lt;br /&gt;
&lt;br /&gt;
Se crean usando paréntesis y separando la lista de valores con comas. Cada posición es un tipo, y no necesitan ser iguales.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
     let tuple: (i32, char) = (12,'d');&lt;br /&gt;
     println!(&amp;quot;El valor es {}&amp;quot;,tuple.1);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La salida del programa sería &amp;lt;code&amp;gt;d&amp;lt;/code&amp;gt;. (&amp;lt;code&amp;gt;tuple.0&amp;lt;/code&amp;gt; se refiere al i32, y &amp;lt;code&amp;gt;tuple.1&amp;lt;/code&amp;gt; al caracter).&lt;br /&gt;
&lt;br /&gt;
Otra forma es asignar parte de ese tuple a una variable, de la siguiente manera:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
     let tuple: (i32, char) = (12,'d');&lt;br /&gt;
     let (a,b)=tuple;&lt;br /&gt;
     println!(&amp;quot;El valor es {}&amp;quot;,b);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Tipos_de_datos&amp;diff=99</id>
		<title>Tipos de datos</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Tipos_de_datos&amp;diff=99"/>
		<updated>2021-02-04T03:27:38Z</updated>

		<summary type="html">&lt;p&gt;Lochi: /* Compuestos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Todo valor en Rust es de un tipo específico. Rust necesita saber ese tipo al momento de compilar el programa, y muchas veces puede inferir el tipo. En otras ocasiones debemos indicarlo explícitamente, y si no lo hacemos produciremos un [[Errores_de_compilación#Errores_en_el_uso_de_las_variables|error]] de compilación.&lt;br /&gt;
&lt;br /&gt;
Hay dos categorías:&lt;br /&gt;
==Escalares==&lt;br /&gt;
Un tipo escalar representa un valor único, y existen cuatro tipos escalares: enteros, punto flotantes, booleanos, y caracteres. &lt;br /&gt;
===Enteros===&lt;br /&gt;
Un entero es un número sin una parte fraccional. Pueden tener signo o no, y ser de 8 a 128 bits. Si tiene signos, el tipo empieza con i y si no tiene signo empieza con u.&lt;br /&gt;
&lt;br /&gt;
====Tamaños y signo====&lt;br /&gt;
El tipo empieza con i y u, y continúa con el tamaño en bits, desde 8 hasta 128 bits: i8, u8, i16, u16, y así sucesivamente hasta i128 y u128.&lt;br /&gt;
&lt;br /&gt;
Se usa [[complemento a dos]] para representar los números negativos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Punto flotante===&lt;br /&gt;
Hay dos tipos primitivos de [[punto flotante]]: f32 (32 bits, precisión simple) y f64 (64 bits, doble precisión). Si no se especifica el tipo, se asume por defecto que es f64. Se usa el estándar [[IEEE-754]] de punto flotante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
    let pi = 3.14; // se asume tipo f64&lt;br /&gt;
    let as: f32 = 3.14; // esta variable es de tipo f32&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Booleanos===&lt;br /&gt;
Una variable booleana puede ser o &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; o &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;, y ocupa un byte de almacenamiento.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
    let bandera = true;&lt;br /&gt;
    let otra_bandera: bool = false;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
===Caracteres===&lt;br /&gt;
Para almacenar letras, se puede usar &amp;lt;code&amp;gt;char&amp;lt;/code&amp;gt;, y se define con comilla única (no doble comilla o comillas que son para las cadenas de caracteres). Los caracteres ocupan 4 bytes de almacenamiento.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
    let p = 'p';&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compuestos==&lt;br /&gt;
Los tipos compuestos agrupan varios valores en un sólo tipo. Existen dos: tuples y arreglos.&lt;br /&gt;
===Tuples===&lt;br /&gt;
Agrupan diferentes tipos en un sólo tipo compuesto. Tienen un tamaño definido: no se pueden modificar de tamaño una vez creados.&lt;br /&gt;
&lt;br /&gt;
Se crean usando paréntesis y separando la lista de valores con comas. Cada posición es un tipo, y no necesitan ser iguales.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
     let tuple: (i32, char) = (12,'d');&lt;br /&gt;
     println!(&amp;quot;El valor es {}&amp;quot;,tuple.1);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La salida del programa sería &amp;lt;code&amp;gt;d&amp;lt;/code&amp;gt;. (&amp;lt;code&amp;gt;tuple.0&amp;lt;/code&amp;gt; se refiere al i32, y &amp;lt;code&amp;gt;tuple.1&amp;lt;/code&amp;gt; al caracter).&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Tipos_de_datos&amp;diff=98</id>
		<title>Tipos de datos</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Tipos_de_datos&amp;diff=98"/>
		<updated>2021-02-04T03:21:16Z</updated>

		<summary type="html">&lt;p&gt;Lochi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Todo valor en Rust es de un tipo específico. Rust necesita saber ese tipo al momento de compilar el programa, y muchas veces puede inferir el tipo. En otras ocasiones debemos indicarlo explícitamente, y si no lo hacemos produciremos un [[Errores_de_compilación#Errores_en_el_uso_de_las_variables|error]] de compilación.&lt;br /&gt;
&lt;br /&gt;
Hay dos categorías:&lt;br /&gt;
==Escalares==&lt;br /&gt;
Un tipo escalar representa un valor único, y existen cuatro tipos escalares: enteros, punto flotantes, booleanos, y caracteres. &lt;br /&gt;
===Enteros===&lt;br /&gt;
Un entero es un número sin una parte fraccional. Pueden tener signo o no, y ser de 8 a 128 bits. Si tiene signos, el tipo empieza con i y si no tiene signo empieza con u.&lt;br /&gt;
&lt;br /&gt;
====Tamaños y signo====&lt;br /&gt;
El tipo empieza con i y u, y continúa con el tamaño en bits, desde 8 hasta 128 bits: i8, u8, i16, u16, y así sucesivamente hasta i128 y u128.&lt;br /&gt;
&lt;br /&gt;
Se usa [[complemento a dos]] para representar los números negativos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Punto flotante===&lt;br /&gt;
Hay dos tipos primitivos de [[punto flotante]]: f32 (32 bits, precisión simple) y f64 (64 bits, doble precisión). Si no se especifica el tipo, se asume por defecto que es f64. Se usa el estándar [[IEEE-754]] de punto flotante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
    let pi = 3.14; // se asume tipo f64&lt;br /&gt;
    let as: f32 = 3.14; // esta variable es de tipo f32&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Booleanos===&lt;br /&gt;
Una variable booleana puede ser o &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; o &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;, y ocupa un byte de almacenamiento.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
    let bandera = true;&lt;br /&gt;
    let otra_bandera: bool = false;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
===Caracteres===&lt;br /&gt;
Para almacenar letras, se puede usar &amp;lt;code&amp;gt;char&amp;lt;/code&amp;gt;, y se define con comilla única (no doble comilla o comillas que son para las cadenas de caracteres). Los caracteres ocupan 4 bytes de almacenamiento.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
    let p = 'p';&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compuestos==&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Tipos_de_datos&amp;diff=97</id>
		<title>Tipos de datos</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Tipos_de_datos&amp;diff=97"/>
		<updated>2021-02-03T03:16:31Z</updated>

		<summary type="html">&lt;p&gt;Lochi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Todo valor en Rust es de un tipo específico. Rust necesita saber ese tipo al momento de compilar el programa, y muchas veces puede inferir el tipo. En otras ocasiones debemos indicarlo explícitamente, y si no lo hacemos produciremos un [[Errores_de_compilación#Errores_en_el_uso_de_las_variables|error]] de compilación.&lt;br /&gt;
&lt;br /&gt;
Hay dos categorías:&lt;br /&gt;
==Escalares==&lt;br /&gt;
Un tipo escalar representa un valor único, y existen cuatro tipos escalares: enteros, punto flotantes, booleanos, y caracteres. &lt;br /&gt;
===Enteros===&lt;br /&gt;
Un entero es un número sin una parte fraccional. Pueden tener signo o no, y ser de 8 a 128 bits. Si tiene signos, el tipo empieza con i y si no tiene signo empieza con u.&lt;br /&gt;
&lt;br /&gt;
====Tamaños y signo====&lt;br /&gt;
El tipo empieza con i y u, y continúa con el tamaño en bits, desde 8 hasta 128 bits: i8, u8, i16, u16, y así sucesivamente hasta i128 y u128.&lt;br /&gt;
&lt;br /&gt;
Se usa [[complemento a dos]] para representar los números negativos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Punto flotante===&lt;br /&gt;
Hay dos tipos primitivos de [[punto flotante]]: f32 (32 bits, precisión simple) y f64 (64 bits, doble precisión). Si no se especifica el tipo, se asume por defecto que es f64. Se usa el estándar [[IEEE-754]] de punto flotante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
    let pi = 3.14; // se asume tipo f64&lt;br /&gt;
    let as: f32 = 3.14; // esta variable es de tipo f32&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Booleanos===&lt;br /&gt;
Una variable booleana puede ser o &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; o &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;, y ocupa un byte de almacenamiento.&lt;br /&gt;
&lt;br /&gt;
===Caracteres===&lt;br /&gt;
&lt;br /&gt;
==Compuestos==&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Tipos_de_datos&amp;diff=96</id>
		<title>Tipos de datos</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Tipos_de_datos&amp;diff=96"/>
		<updated>2021-02-03T03:13:20Z</updated>

		<summary type="html">&lt;p&gt;Lochi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Todo valor en Rust es de un tipo específico. Rust necesita saber ese tipo al momento de compilar el programa, y muchas veces puede inferir el tipo. En otras ocasiones debemos indicarlo explícitamente, y si no lo hacemos produciremos un [[Errores_de_compilación#Errores_en_el_uso_de_las_variables|error]] de compilación.&lt;br /&gt;
&lt;br /&gt;
Hay dos categorías:&lt;br /&gt;
==Escalares==&lt;br /&gt;
Un tipo escalar representa un valor único, y existen cuatro tipos escalares: enteros, punto flotantes, booleanos, y caracteres. &lt;br /&gt;
===Enteros===&lt;br /&gt;
Un entero es un número sin una parte fraccional. Pueden tener signo o no, y ser de 8 a 128 bits. Si tiene signos, el tipo empieza con i y si no tiene signo empieza con u.&lt;br /&gt;
&lt;br /&gt;
====Tamaños y signo====&lt;br /&gt;
El tipo empieza con i y u, y continúa con el tamaño en bits, desde 8 hasta 128 bits: i8, u8, i16, u16, y así sucesivamente hasta i128 y u128.&lt;br /&gt;
&lt;br /&gt;
Se usa [[complemento a dos]] para representar los números negativos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Punto flotante===&lt;br /&gt;
Hay dos tipos primitivos de [[punto flotante]]: f32 (32 bits, precisión simple) y f64 (64 bits, doble precisión). Si no se especifica el tipo, se asume por defecto que es f64. Se usa el estándar [[IEEE-754]] de punto flotante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;rust&amp;quot; line='line' highlight=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
fn main(){&lt;br /&gt;
    let pi = 3.14; // se asume tipo f64&lt;br /&gt;
    let as: f32 = 3.14; // esta variable es de tipo f32&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Booleanos===&lt;br /&gt;
&lt;br /&gt;
===Caracteres===&lt;br /&gt;
&lt;br /&gt;
==Compuestos==&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Tipos_de_datos&amp;diff=95</id>
		<title>Tipos de datos</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Tipos_de_datos&amp;diff=95"/>
		<updated>2021-02-03T03:07:40Z</updated>

		<summary type="html">&lt;p&gt;Lochi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Todo valor en Rust es de un tipo específico. Rust necesita saber ese tipo al momento de compilar el programa, y muchas veces puede inferir el tipo. En otras ocasiones debemos indicarlo explícitamente, y si no lo hacemos produciremos un [[Errores_de_compilación#Errores_en_el_uso_de_las_variables|error]] de compilación.&lt;br /&gt;
&lt;br /&gt;
Hay dos categorías:&lt;br /&gt;
==Escalares==&lt;br /&gt;
Un tipo escalar representa un valor único, y existen cuatro tipos escalares: enteros, punto flotantes, booleanos, y caracteres. &lt;br /&gt;
===Enteros===&lt;br /&gt;
Un entero es un número sin una parte fraccional. Pueden tener signo o no, y ser de 8 a 128 bits. Si tiene signos, el tipo empieza con i y si no tiene signo empieza con u.&lt;br /&gt;
&lt;br /&gt;
====Tamaños y signo====&lt;br /&gt;
El tipo empieza con i y u, y continúa con el tamaño en bits, desde 8 hasta 128 bits: i8, u8, i16, u16, y así sucesivamente hasta i128 y u128.&lt;br /&gt;
&lt;br /&gt;
Se usa [[complemento a dos]] para representar los números negativos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Punto flotante===&lt;br /&gt;
&lt;br /&gt;
===Booleanos===&lt;br /&gt;
&lt;br /&gt;
===Caracteres===&lt;br /&gt;
&lt;br /&gt;
==Compuestos==&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
	<entry>
		<id>https://abax.io/index.php?title=Tipos_de_datos&amp;diff=93</id>
		<title>Tipos de datos</title>
		<link rel="alternate" type="text/html" href="https://abax.io/index.php?title=Tipos_de_datos&amp;diff=93"/>
		<updated>2021-01-28T03:47:24Z</updated>

		<summary type="html">&lt;p&gt;Lochi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Todo valor en Rust es de un tipo específico. Rust necesita saber ese tipo al momento de compilar el programa, y muchas veces puede inferir el tipo. En otras ocasiones debemos indicarlo explícitamente, y si no lo hacemos produciremos un [[Errores_de_compilación#Errores_en_el_uso_de_las_variables|error]] de compilación.&lt;br /&gt;
&lt;br /&gt;
Hay dos categorías:&lt;br /&gt;
==Escalares==&lt;br /&gt;
Un tipo escalar representa un valor único, y existen cuatro tipos escalares: enteros, punto flotantes, booleanos, y caracteres. &lt;br /&gt;
===Enteros===&lt;br /&gt;
Un entero es un número sin una parte fraccional. Pueden tener signo o no, y ser de 8 a 128 bits.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Punto flotante===&lt;br /&gt;
&lt;br /&gt;
===Booleanos===&lt;br /&gt;
&lt;br /&gt;
===Caracteres===&lt;br /&gt;
&lt;br /&gt;
==Compuestos==&lt;/div&gt;</summary>
		<author><name>Lochi</name></author>
	</entry>
</feed>