sinónimos sinonimos significado significa rae que palabra gerencia encuentra diccionario adscritos adscrito adscripto adscripción adscripcion rust

rust - sinonimos - sinónimos de adscripción social



¿Qué es la adscripción de tipo? (1)

Varias veces he usado una sintaxis incorrecta, como olvidar usar en este ejemplo:

let closure_annotated = |value: i32| -> i32 { temp: i32 = fun(5i32); //<-- Error temp + value + 1 };

error: type ascription is experimental (see issue #23416) temp: i32 = fun(5i32); //<-- Error ^~~~~~~~~

Sé que este problema se resuelve con let , pero ¿puede alguien explicar qué es "tipo de inscripción" y qué uso tiene?

Encontré el problema # 23416 y la puerta de funciones para la suscripción de tipo , pero no pude encontrar nada para entender qué es la "inscripción de tipo" y cuál es su propósito.


La adscripción de tipo es la capacidad de anotar una expresión con el tipo que queremos que tenga. La asignación de tipo en Rust se describe en RFC 803 .

En algunas situaciones, el tipo de expresión puede ser ambiguo. Por ejemplo, este código:

fn main() { println!("{:?}", "hello".chars().collect()); }

da el siguiente error:

<anon>:2:38: 2:47 error: unable to infer enough type information about `_`; type annotations or generic parameter binding required [E0282] <anon>:2 println!("{:?}", "hello".chars().collect()); ^~~~~~~~~

Esto se debe a que el método de collect puede devolver cualquier tipo que implemente el rasgo FromIterator para el tipo de Item del iterador. Con el tipo de suscripción, se podría escribir:

fn main() { println!("{:?}", "hello".chars().collect(): Vec<char>); }

En lugar de las formas actuales (a partir de Rust 1.7) de desambiguar esta expresión:

fn main() { println!("{:?}", "hello".chars().collect::<Vec<char>>()); }

o:

fn main() { let vec: Vec<char> = "hello".chars().collect(); println!("{:?}", vec); }