You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/4.cargo/1.format.md
-14Lines changed: 0 additions & 14 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -16,8 +16,6 @@ Una de las mayores fortalezas de Rust es su énfasis en la claridad y legibilida
16
16
17
17
En este artículo, exploraremos cómo usar `cargo fmt` para formatear tu código, configurarlo según tus necesidades, y automatizar su uso en pipelines como GitHub Actions y GitLab CI/CD. Además, explicaremos cómo instalarlo en caso de que no esté disponible en tu entorno.
18
18
19
-
---
20
-
21
19
### ¿Qué es `cargo fmt` y por qué es útil?
22
20
23
21
`cargo fmt` es el comando de Cargo que ejecuta `rustfmt`, el formateador oficial de Rust. Esta herramienta reformatea tu código siguiendo las convenciones oficiales de estilo de Rust, lo que asegura:
@@ -28,8 +26,6 @@ En este artículo, exploraremos cómo usar `cargo fmt` para formatear tu código
28
26
29
27
Además, es particularmente útil en entornos colaborativos y automatizaciones, como pipelines de integración continua (CI), donde puedes validar automáticamente que el código esté correctamente formateado antes de aceptar cambios.
30
28
31
-
---
32
-
33
29
### Instalación y Configuración Inicial
34
30
35
31
#### Instalación de `rustfmt`
@@ -52,8 +48,6 @@ cargo fmt --version
52
48
53
49
Esto debería mostrar la versión instalada de `rustfmt`.
54
50
55
-
---
56
-
57
51
### Uso Básico de `cargo fmt`
58
52
59
53
Para formatear todo tu proyecto, simplemente ejecuta:
@@ -70,8 +64,6 @@ cargo fmt --check
70
64
71
65
El modo `--check` es especialmente útil en pipelines de CI para validar que el código esté correctamente formateado antes de fusionar cambios.
72
66
73
-
---
74
-
75
67
### Configuración de `rustfmt`
76
68
77
69
Puedes personalizar `rustfmt` mediante un archivo de configuración llamado `rustfmt.toml`. Este archivo puede colocarse en la raíz de tu proyecto y permite ajustar varias opciones de estilo.
@@ -97,8 +89,6 @@ config-path = "rustfmt.toml"
97
89
98
90
Esto garantiza que `cargo fmt` use la configuración personalizada, incluso si el archivo `rustfmt.toml` está en una ubicación no estándar.
99
91
100
-
---
101
-
102
92
### Integración de `cargo fmt` en Pipelines de CI
103
93
104
94
#### Usando GitHub Actions
@@ -157,8 +147,6 @@ format_check:
157
147
158
148
Este trabajo valida el formato en los cambios propuestos (merge requests) y en la rama principal.
159
149
160
-
---
161
-
162
150
### Buenas Prácticas y Recomendaciones
163
151
164
152
1. **Formatea antes de hacer commits:** Integra `cargo fmt` en tus hooks de pre-commit con herramientas como [pre-commit](https://pre-commit.com/). Esto asegura que todos los commits tengan un formato limpio.
@@ -169,8 +157,6 @@ Este trabajo valida el formato en los cambios propuestos (merge requests) y en l
169
157
170
158
4. **Evita excepciones innecesarias:** Aunque puedes personalizar el formato, es mejor adherirse a las reglas predeterminadas, ya que son el estándar en la comunidad Rust.
171
159
172
-
---
173
-
174
160
### Conclusión
175
161
176
162
`cargo fmt`es una herramienta esencial en el ecosistema Rust para garantizar un código limpio, legible y consistente. Su facilidad de uso, combinada con la capacidad de personalización y la integración en pipelines, lo hace indispensable para proyectos de cualquier escala. A medida que trabajes en proyectos colaborativos, adoptar `cargo fmt` no solo te ahorrará tiempo, sino que también mejorará la calidad general del código. ¡Haz que `cargo fmt` sea parte de tu flujo de trabajo y lleva tus proyectos al siguiente nivel! 🚀
Copy file name to clipboardExpand all lines: content/4.cargo/2.modules.md
-16Lines changed: 0 additions & 16 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -16,8 +16,6 @@ data:
16
16
17
17
Cuando desarrollamos en Rust, mantener el código organizado es esencial para la escalabilidad y la mantenibilidad. Rust ofrece un sistema de módulos flexible que nos ayuda a dividir el código en componentes más manejables. En este artículo exploraremos cómo crear y gestionar módulos, controlar su visibilidad, y estructurar proyectos de manera eficiente, abordando las prácticas más recomendadas en la comunidad.
18
18
19
-
---
20
-
21
19
## Introducción a los módulos
22
20
23
21
Los módulos en Rust agrupan código relacionado bajo un espacio de nombres, permitiendo:
@@ -28,8 +26,6 @@ Los módulos en Rust agrupan código relacionado bajo un espacio de nombres, per
28
26
29
27
Un módulo puede contener funciones, estructuras, enumeraciones, constantes e incluso otros módulos.
30
28
31
-
---
32
-
33
29
## Crear y gestionar módulos
34
30
35
31
### Módulos en el mismo archivo
@@ -98,8 +94,6 @@ pub mod add;
98
94
pubmodmultiply;
99
95
```
100
96
101
-
---
102
-
103
97
## Control de visibilidad
104
98
105
99
Por defecto, los módulos y sus elementos son privados. Para hacerlos accesibles, usa `pub`.
@@ -128,8 +122,6 @@ fn main() {
128
122
}
129
123
```
130
124
131
-
---
132
-
133
125
## Estructuración recomendada para proyectos Rust
134
126
135
127
La organización de un proyecto depende de su propósito. Aquí hay patrones comunes:
@@ -222,8 +214,6 @@ src/
222
214
└── tool2.rs
223
215
```
224
216
225
-
---
226
-
227
217
## Puntos de entrada: `main.rs` y `lib.rs`
228
218
229
219
### `main.rs`
@@ -256,24 +246,18 @@ fn main() {
256
246
}
257
247
```
258
248
259
-
---
260
-
261
249
## Buenas prácticas y convenciones
262
250
263
251
1.**Divide y vencerás:** Usa módulos para separar responsabilidades.
264
252
2.**Restricción de visibilidad:** Haz públicos solo los elementos necesarios.
265
253
3.**Nombres consistentes:** Usa nombres descriptivos para módulos y archivos.
266
254
4.**Centraliza lo común:** Mueve funciones reutilizables a `lib.rs`.
267
255
268
-
---
269
-
270
256
## Configuraciones adicionales para módulos
271
257
272
258
-**Agrupación lógica:** Usa directorios para módulos con múltiples submódulos.
273
259
-**Macros compartidas:** Crea un módulo separado para macros reutilizables, por ejemplo, `src/macros.rs`.
274
260
275
-
---
276
-
277
261
## Conclusión
278
262
279
263
Organizar proyectos con módulos en Rust no solo mejora la claridad del código, sino que también facilita su escalabilidad. Ya sea que trabajes en un ejecutable, una biblioteca o ambos, seguir estas prácticas te ayudará a mantener un código limpio, reutilizable y fácil de entender. ¡Experimenta con estas técnicas y lleva tus proyectos al siguiente nivel! 🚀
Copy file name to clipboardExpand all lines: content/4.cargo/3.workspaces.md
-18Lines changed: 0 additions & 18 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -15,8 +15,6 @@ data:
15
15
16
16
A medida que los proyectos en Rust crecen, mantenerlos organizados y eficientes puede volverse un desafío. Aquí es donde los **workspaces** entran en juego. Un workspace te permite gestionar múltiples crates en un mismo proyecto, promoviendo la modularidad, el rendimiento y la mantenibilidad. En este artículo, exploraremos cómo estructurar y aprovechar al máximo los workspaces en Rust.
17
17
18
-
---
19
-
20
18
## ¿Qué es un workspace?
21
19
22
20
Un workspace en Rust es un grupo de crates que comparten configuraciones y dependencias comunes. Los workspaces permiten:
@@ -25,8 +23,6 @@ Un workspace en Rust es un grupo de crates que comparten configuraciones y depen
25
23
-**Eficiencia en la compilación:** Aprovecha la compilación incremental para crates compartidos.
26
24
-**Gestión centralizada:** Simplifica la administración de dependencias y configuraciones.
27
25
28
-
---
29
-
30
26
## Estructura típica de un workspace
31
27
32
28
Un workspace suele tener una estructura similar a esta:
@@ -56,8 +52,6 @@ my_project/
56
52
2.**Directorio `crates/`:** Es una convención común agrupar los crates dentro de un subdirectorio. No es obligatorio, pero mejora la organización.
57
53
3.**Subcrates:** Cada crate tiene su propio `Cargo.toml` y código fuente en `src/`.
58
54
59
-
---
60
-
61
55
## Configuración de un workspace
62
56
63
57
### Archivo `Cargo.toml` raíz
@@ -85,8 +79,6 @@ log = "0.4"
85
79
86
80
Esto hace que todas las crates del workspace tengan acceso a estas dependencias sin necesidad de declararlas individualmente.
87
81
88
-
---
89
-
90
82
## ¿Cuándo dividir un proyecto en workspaces?
91
83
92
84
Separar un proyecto en múltiples crates dentro de un workspace tiene sentido cuando:
@@ -96,8 +88,6 @@ Separar un proyecto en múltiples crates dentro de un workspace tiene sentido cu
96
88
3.**Diferentes responsabilidades:** Por ejemplo, separar el frontend y el backend de una aplicación.
97
89
4.**Optimización de la compilación:** Dividir un proyecto en crates permite que solo las partes modificadas se recompilen.
98
90
99
-
---
100
-
101
91
## Mejores prácticas para organizar workspaces
102
92
103
93
### 1. Usa la convención `crates/`
@@ -123,8 +113,6 @@ pub use log::*;
123
113
124
114
Esto reduce la duplicación y mejora el tiempo de compilación.
125
115
126
-
---
127
-
128
116
## Gestión de dependencias compartidas
129
117
130
118
### Usar `[workspace.dependencies]`
@@ -148,8 +136,6 @@ authors = ["Tu Nombre"]
148
136
license = "MIT"
149
137
```
150
138
151
-
---
152
-
153
139
## Comandos comunes en un workspace
154
140
155
141
### 1. Afectar un crate específico
@@ -188,8 +174,6 @@ Si el workspace contiene múltiples ejecutables, selecciona cuál ejecutar:
188
174
cargo run -p crate_c
189
175
```
190
176
191
-
---
192
-
193
177
## Automatización y pruebas en workspaces
194
178
195
179
### Pruebas
@@ -215,8 +199,6 @@ cargo bench
215
199
cargo bench -p crate_b
216
200
```
217
201
218
-
---
219
-
220
202
## Conclusión
221
203
222
204
Los workspaces de Rust son una herramienta poderosa para organizar y gestionar proyectos grandes y complejos. Adoptar estrategias como la reutilización de código modular, el uso de dependencias compartidas y la separación lógica de responsabilidades no solo mejora la mantenibilidad, sino que también optimiza los tiempos de compilación y la claridad del proyecto. Con una buena planificación, los workspaces pueden ser el pilar de cualquier proyecto Rust escalable y eficiente.
Copy file name to clipboardExpand all lines: content/4.cargo/index.md
-18Lines changed: 0 additions & 18 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -19,8 +19,6 @@ data:
19
19
20
20
Una de las razones por las que Rust se ha convertido en un lenguaje popular es su ecosistema robusto y bien integrado. En el corazón de este ecosistema está **Cargo**, la herramienta oficial para gestionar proyectos en Rust. Cargo no solo se encarga de la construcción de tus proyectos, sino también de la gestión de dependencias, pruebas, y mucho más. Este artículo explora los comandos y características más importantes de Cargo, ayudándote a aprovechar al máximo esta poderosa herramienta.
21
21
22
-
---
23
-
24
22
### ¿Qué es Cargo?
25
23
26
24
Cargo es el administrador de paquetes y herramienta de construcción para Rust. Es comparable a herramientas como `npm` en JavaScript o `pip` en Python, pero con un alcance más amplio. Cargo simplifica tareas esenciales como:
@@ -33,8 +31,6 @@ Cargo es el administrador de paquetes y herramienta de construcción para Rust.
33
31
34
32
Cuando inicias un proyecto en Rust con `cargo new`, Cargo crea una estructura de directorios estándar que incluye un archivo llamado `Cargo.toml`. Este archivo es el corazón de la configuración del proyecto, donde defines tus dependencias, características, y opciones de compilación.
35
33
36
-
---
37
-
38
34
### Construcción de Proyectos con `cargo build`
39
35
40
36
El comando más básico es `cargo build`, que compila tu proyecto. Al ejecutarlo, Cargo genera los binarios en el directorio `target/debug` por defecto. Si necesitas una compilación optimizada para producción, puedes usar la opción `--release`:
@@ -45,8 +41,6 @@ cargo build --release
45
41
46
42
Esto genera el binario en `target/release` con optimizaciones avanzadas, pero a costa de tiempos de compilación más largos. Es ideal para el código que se ejecutará en entornos de producción.
47
43
48
-
---
49
-
50
44
### Agregando y Eliminando Dependencias
51
45
52
46
Una de las características más útiles de Cargo es la facilidad con la que puedes manejar dependencias. Con el comando `cargo add` del plugin [cargo-edit](https://github.com/killercup/cargo-edit), puedes agregar dependencias rápidamente:
@@ -79,8 +73,6 @@ cargo remove serde
79
73
80
74
Esto actualiza automáticamente tu `Cargo.toml` y elimina la dependencia.
81
75
82
-
---
83
-
84
76
### Pruebas con `cargo test`
85
77
86
78
Rust incorpora un sistema de pruebas potente, y Cargo facilita ejecutarlas con `cargo test`. Este comando compila y ejecuta las pruebas definidas en tu proyecto, incluyendo las funciones marcadas con `#[test]`. Cargo incluso configura un entorno de pruebas especial para garantizar consistencia.
@@ -97,8 +89,6 @@ Si necesitas pruebas más detalladas, puedes usar la opción `--nocapture` para
97
89
cargo test -- --nocapture
98
90
```
99
91
100
-
---
101
-
102
92
### Benchmarks con `cargo bench`
103
93
104
94
Rust también soporta benchmarking, aunque esta funcionalidad requiere habilitar el feature `bench` en el archivo `Cargo.toml`. Una vez configurado, puedes usar:
@@ -109,8 +99,6 @@ cargo bench
109
99
110
100
Esto ejecuta tus benchmarks usando la biblioteca estándar `test` y genera resultados detallados sobre el rendimiento.
111
101
112
-
---
113
-
114
102
### Características Avanzadas con Flags
115
103
116
104
Cargo incluye una serie de opciones para personalizar cómo se compila y configura tu proyecto. Algunas de las más útiles incluyen:
@@ -142,8 +130,6 @@ Cargo incluye una serie de opciones para personalizar cómo se compila y configu
142
130
143
131
Esto requiere la instalación del toolchain correspondiente con `rustup`.
144
132
145
-
---
146
-
147
133
### Más Allá de los Comandos Básicos
148
134
149
135
Además de los comandos principales, Cargo incluye otras herramientas que vale la pena explorar:
@@ -172,17 +158,13 @@ Además de los comandos principales, Cargo incluye otras herramientas que vale l
172
158
cargo check
173
159
```
174
160
175
-
---
176
-
177
161
### Recomendaciones y Consejos
178
162
179
163
1.**Organiza tus dependencias:** Usa `[dependencies]`, `[dev-dependencies]` y `[build-dependencies]` adecuadamente para mantener un `Cargo.toml` limpio y claro.
180
164
2.**Habilita solo las características necesarias:** Minimiza el uso de características opcionales para reducir el tamaño del binario y mejorar los tiempos de compilación.
181
165
3.**Prueba siempre con `--release`:** Antes de desplegar, verifica que tu proyecto funciona correctamente en modo optimizado.
182
166
4.**Explora las herramientas de la comunidad:** Crates como `cargo-watch` pueden mejorar tu flujo de trabajo al reconstruir automáticamente tu proyecto cuando detecta cambios.
183
167
184
-
---
185
-
186
168
### Conclusión
187
169
188
170
Cargo no es solo una herramienta; es el eje central del desarrollo en Rust. Desde la gestión de dependencias hasta la construcción de proyectos optimizados, Cargo simplifica y potencia tu flujo de trabajo. Conocer sus comandos y opciones avanzadas te permitirá aprovechar al máximo el ecosistema Rust, escribiendo código más eficiente, seguro y fácil de mantener. ¡Explora las posibilidades que Cargo tiene para ofrecer y haz que tus proyectos brillen! 🚀
0 commit comments