Skip to content

Commit 681b108

Browse files
committed
feat(content): add cargo index
1 parent d6e95f4 commit 681b108

File tree

1 file changed

+169
-1
lines changed

1 file changed

+169
-1
lines changed

content/4.cargo/index.md

Lines changed: 169 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,172 @@ data:
1313
targetPosition:
1414
traits: 'bottom'
1515
---
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

Comments
 (0)