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/index.md
+169-1Lines changed: 169 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -13,4 +13,172 @@ data:
13
13
targetPosition:
14
14
traits: 'bottom'
15
15
---
16
-
# Titulo
16
+
## Introducción a Cargo: La Herramienta Esencial para el Ecosistema Rust
17
+
18
+
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.
19
+
20
+
---
21
+
22
+
### ¿Qué es Cargo?
23
+
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:
25
+
26
+
- Compilar proyectos.
27
+
- Resolver dependencias externas.
28
+
- Ejecutar pruebas y benchmarks.
29
+
- Generar documentación.
30
+
- Administrar configuraciones avanzadas para compilación y características opcionales.
31
+
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.
33
+
34
+
---
35
+
36
+
### Construcción de Proyectos con `cargo build`
37
+
38
+
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`:
39
+
40
+
```bash
41
+
cargo build --release
42
+
```
43
+
44
+
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.
45
+
46
+
---
47
+
48
+
### Agregando y Eliminando Dependencias
49
+
50
+
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:
51
+
52
+
```bash
53
+
cargo add serde
54
+
```
55
+
56
+
Esto agrega `serde` a tu archivo `Cargo.toml` bajo las dependencias estándar. Si quieres marcar una dependencia como opcional o específica de desarrollo, puedes usar las siguientes opciones:
57
+
58
+
-**Dependencia de desarrollo:**
59
+
```bash
60
+
cargo add --dev rand
61
+
```
62
+
Esto agrega la dependencia bajo `[dev-dependencies]`, útil para herramientas y pruebas que no se incluyen en el binario final.
63
+
64
+
-**Dependencia opcional:**
65
+
```bash
66
+
cargo add serde --optional
67
+
```
68
+
Esto permite que los usuarios de tu biblioteca activen esta dependencia si la necesitan.
69
+
70
+
Para eliminar dependencias, puedes usar:
71
+
72
+
```bash
73
+
cargo remove serde
74
+
```
75
+
76
+
Esto actualiza automáticamente tu `Cargo.toml` y elimina la dependencia.
77
+
78
+
---
79
+
80
+
### Pruebas con `cargo test`
81
+
82
+
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.
83
+
84
+
Un aspecto interesante es que puedes filtrar las pruebas que deseas ejecutar:
85
+
86
+
```bash
87
+
cargo test nombre_de_prueba
88
+
```
89
+
90
+
Si necesitas pruebas más detalladas, puedes usar la opción `--nocapture` para ver la salida estándar:
91
+
92
+
```bash
93
+
cargo test -- --nocapture
94
+
```
95
+
96
+
---
97
+
98
+
### Benchmarks con `cargo bench`
99
+
100
+
Rust también soporta benchmarking, aunque esta funcionalidad requiere habilitar el feature `bench` en el archivo `Cargo.toml`. Una vez configurado, puedes usar:
101
+
102
+
```bash
103
+
cargo bench
104
+
```
105
+
106
+
Esto ejecuta tus benchmarks usando la biblioteca estándar `test` y genera resultados detallados sobre el rendimiento.
107
+
108
+
---
109
+
110
+
### Características Avanzadas con Flags
111
+
112
+
Cargo incluye una serie de opciones para personalizar cómo se compila y configura tu proyecto. Algunas de las más útiles incluyen:
113
+
114
+
1.**`--features` y `--no-default-features`:**
115
+
En Rust, puedes definir "características" opcionales en tu `Cargo.toml` que habilitan o deshabilitan dependencias específicas o partes del código. Para activarlas, usa:
116
+
117
+
```bash
118
+
cargo build --features feature_name
119
+
```
120
+
121
+
Si quieres desactivar las características por defecto:
122
+
123
+
```bash
124
+
cargo build --no-default-features
125
+
```
126
+
127
+
Este enfoque es útil para proyectos modulares o bibliotecas que ofrecen funcionalidad opcional.
128
+
129
+
2.**`--dev` y `--release`:**
130
+
Por defecto, Cargo compila en modo debug, pero puedes cambiarlo con `--release` para optimizar el binario. Usa `--dev` para pruebas y desarrollo.
131
+
132
+
3.**`--target`:**
133
+
Si estás desarrollando para múltiples plataformas, puedes especificar el objetivo de compilación:
134
+
135
+
```bash
136
+
cargo build --target x86_64-unknown-linux-gnu
137
+
```
138
+
139
+
Esto requiere la instalación del toolchain correspondiente con `rustup`.
140
+
141
+
---
142
+
143
+
### Más Allá de los Comandos Básicos
144
+
145
+
Además de los comandos principales, Cargo incluye otras herramientas que vale la pena explorar:
146
+
147
+
-**`cargo doc`:** Genera documentación HTML a partir de los comentarios en tu código:
148
+
149
+
```bash
150
+
cargo doc --open
151
+
```
152
+
153
+
-**`cargo run`:** Compila y ejecuta tu programa en un solo paso:
154
+
155
+
```bash
156
+
cargo run
157
+
```
158
+
159
+
-**`cargo clean`:** Elimina los binarios y archivos generados en `target/`:
160
+
161
+
```bash
162
+
cargo clean
163
+
```
164
+
165
+
-**`cargo check`:** Una forma rápida de verificar que tu código se compila sin generar un binario:
166
+
167
+
```bash
168
+
cargo check
169
+
```
170
+
171
+
---
172
+
173
+
### Recomendaciones y Consejos
174
+
175
+
1.**Organiza tus dependencias:** Usa `[dependencies]`, `[dev-dependencies]` y `[build-dependencies]` adecuadamente para mantener un `Cargo.toml` limpio y claro.
176
+
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.
177
+
3.**Prueba siempre con `--release`:** Antes de desplegar, verifica que tu proyecto funciona correctamente en modo optimizado.
178
+
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.
179
+
180
+
---
181
+
182
+
### Conclusión
183
+
184
+
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