Prefacio

Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com

El código es más lo que llamarías directrices que normas propiamente dichas.

Héctor Barbossa

En el abarrotado panorama de los lenguajes de programación modernos, Rust es diferente. Rust ofrece la velocidad de un lenguaje compilado, la eficiencia de un lenguaje sin recolección de basura y la seguridad de tipos de un lenguaje funcional, así como una solución única a los problemas de seguridad de memoria. Como resultado, Rust aparece regularmente en las encuestas como el lenguaje de programación más querido.

La solidez y consistencia del sistema de tipos de Rust significa que si un programa Rust compila, ya hay una probabilidad decente de que funcione, un fenómeno que antes sólo se observaba con lenguajes más académicos y menos accesibles, como Haskell. Si un programa Rust compila, también funcionará con seguridad.

Sin embargo, esta seguridad -tanto de tipo como de memoria- tiene un coste. A pesar de la calidad de la documentación básica, Rust tiene fama de tener una empinada rampa de acceso, en la que los recién llegados tienen que pasar por los rituales de iniciación de luchar contra el comprobador de préstamos, rediseñar sus estructuras de datos y ser desconcertados por los tiempos de vida. Un programa Rust que se compila puede tener muchas posibilidades de funcionar la primera vez, pero la lucha para conseguir que se compile es real, incluso con los diagnósticos de error notablemente útiles del compilador Rust.

A quién va dirigido este libro

Este libro intenta ayudar en estas áreas en las que los programadores tienen dificultades, incluso si ya tienen experiencia con un lenguaje compilado como C++. Como tal -y al igual que otros libros de <Lenguaje> Eficaz-este libro pretende ser el segundo libro que pueda necesitar un recién llegado a Rust, después de que ya haya encontrado los fundamentos en otra parte -por ejemplo, en The Rust Programming Language (Steve Klabnik y Carol Nichols, No Starch Press) o Programming Rust (Jim Blandy et al., O'Reilly).

Sin embargo, la seguridad de Rust da lugar a un enfoque ligeramente distinto de los artículos aquí tratados, sobre todo si se compara con la serie original Effective C++ de Scott Meyers. El lenguaje C++ estaba (y está) lleno de obstáculos, así que C++ Eficaz se centró en una colección de consejos para evitarlos, basados en la experiencia del mundo real creando software en C++. Y lo que es más importante, contenía directrices, no reglas, porque las directrices tienen excepciones: proporcionar la justificación detallada de una directriz permite a los lectores decidir por sí mismos si su situación particular justificaba romper la regla.

Aquí se mantiene el estilo general de dar consejos junto con las razones de dichos consejos. Sin embargo, dado que Rust está notablemente libre de estribillos, los Artículos aquí se concentran más en los conceptos que introduce Rust. Muchos artículos tienen títulos como "Comprende..." y "Familiarízate con...", y ayudan en el camino hacia la escritura fluida e idiomática de Rust.

La seguridad de Rust también conduce a una ausencia total de elementos titulados "Nunca...". Si realmente nunca debes hacer algo, el compilador generalmente evitará que lo hagas.

Versión Óxido

El texto está escrito para la edición 2018 de Rust, utilizando la cadena de herramientas estable. Laspromesas de retrocompatibilidad de Rust significan que cualquier edición posterior de Rust, incluida la de 2021, seguirá siendo compatible con el código escrito para la edición de 2018, incluso si esa edición posterior introduce cambios de ruptura. Además, Rust es ahora lo suficientemente estable como para que las diferencias entre las ediciones de 2018 y 2021 sean menores; no es necesario modificar nada del código del libro para que sea compatible con la edición de 2021 (pero el punto 19 incluye una excepción en la que una versión posterior de Rust permite un nuevo comportamiento que antes no era posible).

Estos artículos no cubren ningún aspecto de la funcionalidadasync de Rust, ya que esto implica conceptos más avanzados y un soporte menos estable de la cadena de herramientas: ya hay suficiente terreno que cubrir con el Rust síncrono. Quizá surja un Rust asíncrono eficaz en el futuro...

La versión específica de rustc utilizada para los fragmentos de código y los mensajes de error es la 1.70. Es poco probable que los fragmentos de código necesiten cambios para versiones posteriores, pero los mensajes de error pueden variar con tu versión concreta del compilador. Los mensajes de error incluidos en el texto también se han editado manualmente para ajustarlos a las limitaciones de anchura del libro, pero por lo demás son tal como los produce el compilador.

El texto contiene varias referencias y comparaciones con otros lenguajes de tipado estático , como Java, Go y C++, para ayudar a orientarse a los lectores con experiencia en esos lenguajes. (C++ es probablemente el lenguaje equivalente más cercano, sobre todo cuando entra en juego la semántica de movimientos de C++11).

Navegar por este libro

Los artículos que componen el libro se dividen en seis capítulos:

Capítulo 1, "Tipos"

Sugerencias que giran en torno al sistema de tipos básico de Rust

Capítulo 2, "Rasgos"

Sugerencias para trabajar con los rasgos de Rust

Capítulo 3, "Conceptos"

Ideas centrales que forman el diseño de Rust

Capítulo 4, "Dependencias"

Consejos para trabajar con el ecosistema de paquetes de Rust

Capítulo 5, "Utillaje"

Sugerencias para mejorar tu código base yendo más allá del compilador de Rust

Capítulo 6, "Más allá del óxido estándar"

Sugerencias para cuando tengas que trabajar más allá del entorno estándar y seguro de Rust

Aunque podría decirse que el capítulo "Conceptos" es más fundamental que los capítulos "Tipos" y "Rasgos", se ha colocado deliberadamente más adelante en el libro para que los lectores que lean de principio a fin puedan adquirir antes cierta confianza.

Convenciones utilizadas en este libro

En este libro se utilizan las siguientes convenciones tipográficas:

Cursiva

Indica nuevos términos, URL, direcciones de correo electrónico, nombres de archivo y extensiones de archivo.

Constant width

Se utiliza en los listados de programas, así como dentro de los párrafos para referirse a elementos del programa como nombres de variables o funciones, bases de datos, tipos de datos, variables de entorno, sentencias y palabras clave.

Aprendizaje en línea O'Reilly

Nota

Durante más de 40 años, O'Reilly Media ha proporcionado formación tecnológica y empresarial, conocimientos y perspectivas para ayudar a las empresas a alcanzar el éxito.

Nuestra red única de expertos e innovadores comparten sus conocimientos y experiencia a través de libros, artículos y nuestra plataforma de aprendizaje online. La plataforma de aprendizaje en línea de O'Reilly te ofrece acceso bajo demanda a cursos de formación en directo, rutas de aprendizaje en profundidad, entornos de codificación interactivos y una amplia colección de textos y vídeos de O'Reilly y de más de 200 editoriales. Para más información, visita https://oreilly.com.

Cómo contactar con nosotros

Dirige tus comentarios y preguntas sobre este libro a la editorial:

Tenemos una página web para este libro, donde se enumeran erratas, ejemplos y cualquier información adicional. Puedes acceder a esta página en https://oreil.ly/effective-rust.

Para obtener noticias e información sobre nuestros libros y cursos, visita https://oreilly.com.

Encuéntranos en LinkedIn: https://linkedin.com/company/oreilly-media.

Míranos en YouTube: https://youtube.com/oreillymedia.

Agradecimientos

Mi agradecimiento a las personas que han contribuido a hacer posible este libro:

  • Los revisores técnicos que aportaron comentarios expertos y detallados sobre todos los aspectos del texto: Pietro Albini, Jess Males, Mike Capp y, especialmente, Carol Nichols.

  • Mis editores en O'Reilly: Jeff Bleiel, Brian Guerin y Katie Tozer.

  • Tiziano Santoro, de quien aprendí originalmente muchas cosas sobre Rust.

  • Danny Elfanbaum, que proporcionó una asistencia técnica vital para tratar el formato AsciiDoc del libro.

  • Los lectores diligentes de la versión web original del libro, en particular:

    • Julian Rosse, que detectó docenas de erratas y otros errores en el texto en línea.

    • Martin Disch, que señaló posibles mejoras e imprecisiones en varios artículos.

    • Chris Fleetwood, Sergey Kaunov, Clifford Matthews, Remo Senekowitsch, Kirill Zaborsky y un usuario anónimo de Proton Mail, que señaló errores en el texto.

  • Mi familia, que soportó muchos fines de semana cuando me distraía escribiendo.

Get Óxido efectivo now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.