RUST nunca puede ser NULO

Puede que no sepas que NULL nació hace más de medio siglo, y todavía está vivo para crear el lío para nosotros, pero no con RUST.

Aunque se consideraba BOOM para los codificadores, ahora se está convirtiendo en BANE para el programador . Con los lenguajes emergentes, los creadores están evitando la implementación de NULL ahora.

El inventor de NULL Tony Hoare [2] se disculpó por inventarlo en una conferencia de software llamada QCon London en 2009 . Lo llamó un error de mil millones de dólares . Añadió además:

En 1965 , estaba diseñando el primer sistema de tipos completo para referencias en un lenguaje orientado a objetos (ALGOL W). Mi objetivo era garantizar que todo uso de referencias fuera absolutamente seguro, y que el compilador las verificara automáticamente. Pero no pude resistir la tentación de poner una referencia nula, simplemente porque era muy fácil de implementar. Esto ha llevado a innumerables errores, vulnerabilidades y fallas del sistema, que probablemente han causado mil millones de dólares en dolor y daño en los últimos cuarenta años.

Muchas de las veces que intentamos usar un valor nulo como valor no nulo, nos encontramos con algún tipo de situación de pánico que provocó la terminación de nuestro trabajo (código). Todo se debe a su naturaleza, ya que es una propiedad generalizada, por lo que es extremadamente fácil cometer este tipo de error.

Nota: NULL es un valor que actualmente no es válido o está ausente.

El problema real no es con el concepto, se trata realmente de la implementación, en los lenguajes actuales también en algún lugar o de alguna manera tratamos de tener una referencia nula, por otro lado también queremos estar más seguros con eso.

Aunque, Rust no tiene NULL , pero proporciona una enumeración Option que puede codificar el concepto de un valor presente o ausente.

[código]
opción enum {
Algunos (T),
Ninguno,
}
[/ código]

Aquí, es parte de Rust Generics, cualquiera que sea el tipo de datos que mencionemos en T, Some (T) tendrá el valor del mismo tipo de datos.

Si ha trabajado con Java 8 Optional o Scala Option, esto es casi lo mismo.

No necesitamos dar explícitamente el tipo de datos a Opción si estamos asignando un valor a otro que no sea NULL / NONE. Rust verifica implícitamente el tipo de datos del valor asignado a través de Some(T) y lo asigna a Option.

let some_value = Some (15);
let some_literal = Some (“Knoldus”);

En la primera línea de código, implícitamente verificará que sea un número donde se encuentra una Cadena en el caso de este último, mientras que necesitamos proporcionar explícitamente los datos en el caso de NINGUNO .

dejar none_number: Option & lt; i32 & gt; = Ninguno;

Espero que ya hayas leído el blog RUST: Begin the Journey with CODE, donde tratamos de explicar la coincidencia de patrones y el manejo de errores (situación de pánico).

Para extraer el valor de T de Option, debemos hacer lo mismo usando la coincidencia de patrones y manejo de errores. Dejo que usted extraiga el valor y lo use con su código. En caso de que no tenga idea al respecto, consulte el RUST: Comience el viaje con CÓDIGO.

Referencias:
1. El lenguaje de programación Rust
2. Tony Hoare – Wikipedia