Skip to content

Commit 22ffff3

Browse files
committed
fix: cargo correct position in map
1 parent 784cc79 commit 22ffff3

File tree

4 files changed

+68
-33
lines changed

4 files changed

+68
-33
lines changed

content/4.cargo/1.format.md

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,15 @@
11
---
2-
title: 'Cargo'
3-
description: ''
2+
title: "Cargo Format"
3+
description: "cargo fmt: El Formateador Oficial de Rust para Código Limpio y Consistente"
44
draft: true
55
data:
6-
type: 'custom'
7-
topicLevel: 'start'
6+
type: "custom"
7+
topicLevel: "start"
88
position:
9-
x: 200
9+
x: -150
1010
y: 750
11-
sourcePosition:
12-
error-handling: 'right'
13-
targetPosition:
14-
traits: 'bottom'
1511
---
12+
1613
## `cargo fmt`: El Formateador Oficial de Rust para Código Limpio y Consistente
1714

1815
Una de las mayores fortalezas de Rust es su énfasis en la claridad y legibilidad del código. Para garantizar un estilo uniforme en proyectos individuales y colaborativos, Rust incluye una herramienta llamada `rustfmt`, que se integra directamente con Cargo mediante el comando `cargo fmt`.

content/4.cargo/2.modules.md

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
11
---
2-
title: 'Cargo'
3-
description: ''
2+
title: "Modulos"
3+
description: "Organizando Proyectos en Rust: Módulos y Visibilidad"
44
draft: true
55
data:
6-
type: 'custom'
7-
topicLevel: 'start'
6+
type: "custom"
7+
topicLevel: "medium"
88
position:
9-
x: 200
9+
x: 0
1010
y: 750
1111
sourcePosition:
12-
error-handling: 'right'
13-
targetPosition:
14-
traits: 'bottom'
12+
cargo: "right"
1513
---
14+
1615
# Organizando Proyectos en Rust: Módulos y Visibilidad
1716

1817
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.
@@ -34,6 +33,7 @@ Un módulo puede contener funciones, estructuras, enumeraciones, constantes e in
3433
## Crear y gestionar módulos
3534

3635
### Módulos en el mismo archivo
36+
3737
La forma más sencilla de declarar un módulo es hacerlo directamente en el archivo:
3838

3939
```rust
@@ -45,6 +45,7 @@ mod math {
4545
```
4646

4747
Luego accedes a los elementos públicos con el prefijo del módulo:
48+
4849
```rust
4950
fn main() {
5051
let sum = math::add(2, 3);
@@ -53,9 +54,11 @@ fn main() {
5354
```
5455

5556
### Módulos en archivos separados
57+
5658
Para mantener el código limpio, puedes mover los módulos a archivos independientes:
5759

5860
En `main.rs`:
61+
5962
```rust
6063
mod math;
6164

@@ -66,16 +69,19 @@ fn main() {
6669
```
6770

6871
En `math.rs`:
72+
6973
```rust
7074
pub fn add(a: i32, b: i32) -> i32 {
7175
a + b
7276
}
7377
```
7478

7579
### Módulos como directorios
80+
7681
Si un módulo incluye submódulos, puedes organizarlo en un directorio con un archivo `mod.rs` o estructurarlo usando archivos con el mismo nombre que los submódulos.
7782

7883
Estructura de ejemplo:
84+
7985
```
8086
src/
8187
├── main.rs
@@ -86,6 +92,7 @@ src/
8692
```
8793

8894
En `math/mod.rs`:
95+
8996
```rust
9097
pub mod add;
9198
pub mod multiply;
@@ -113,6 +120,7 @@ mod shapes {
113120
```
114121

115122
El acceso desde otro módulo o función será así:
123+
116124
```rust
117125
fn main() {
118126
let rect = shapes::Rectangle { width: 10, height: 20 };
@@ -127,6 +135,7 @@ fn main() {
127135
La organización de un proyecto depende de su propósito. Aquí hay patrones comunes:
128136

129137
### 1. **Proyectos ejecutables simples**
138+
130139
Los proyectos pequeños suelen tener un único archivo `main.rs`:
131140

132141
```
@@ -135,6 +144,7 @@ src/
135144
```
136145

137146
### 2. **Proyectos ejecutables grandes**
147+
138148
A medida que crece, puedes mover lógica a módulos:
139149

140150
```
@@ -146,13 +156,15 @@ src/
146156
```
147157

148158
En `main.rs`:
159+
149160
```rust
150161
mod config;
151162
mod handlers;
152163
mod utils;
153164
```
154165

155166
### 3. **Bibliotecas**
167+
156168
Las bibliotecas usan un archivo `lib.rs` para exponer su API pública:
157169

158170
```
@@ -162,11 +174,13 @@ src/
162174
```
163175

164176
En `lib.rs`:
177+
165178
```rust
166179
pub mod utils;
167180
```
168181

169182
### 4. **Híbridos (ejecutable + biblioteca)**
183+
170184
Un proyecto puede tener `main.rs` para la aplicación y `lib.rs` para lógica reutilizable:
171185

172186
```
@@ -176,6 +190,7 @@ src/
176190
```
177191

178192
En `main.rs`:
193+
179194
```rust
180195
use mycrate::utils::some_function;
181196

@@ -185,6 +200,7 @@ fn main() {
185200
```
186201

187202
En `lib.rs`:
203+
188204
```rust
189205
pub mod utils {
190206
pub fn some_function() {
@@ -194,6 +210,7 @@ pub mod utils {
194210
```
195211

196212
### 5. **Proyectos con múltiples binarios**
213+
197214
Usa un directorio `src/bin/` para incluir otros ejecutables:
198215

199216
```
@@ -210,22 +227,27 @@ src/
210227
## Puntos de entrada: `main.rs` y `lib.rs`
211228

212229
### `main.rs`
230+
213231
Es el punto de entrada de los ejecutables. Aquí defines la lógica inicial de tu programa.
214232

215233
### `lib.rs`
234+
216235
Sirve como punto de entrada para bibliotecas. Aquí defines qué módulos y funciones serán públicos para los usuarios de la biblioteca.
217236

218237
### Coexistencia de `main.rs` y `lib.rs`
238+
219239
En proyectos híbridos, `lib.rs` puede contener la lógica principal reutilizable y `main.rs` consumirla:
220240

221241
En `lib.rs`:
242+
222243
```rust
223244
pub fn greet(name: &str) {
224245
println!("Hola, {}!", name);
225246
}
226247
```
227248

228249
En `main.rs`:
250+
229251
```rust
230252
use mycrate::greet;
231253

content/4.cargo/3.workspaces.md

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,16 @@
11
---
2-
title: 'Cargo'
3-
description: ''
2+
title: "Organización de proyectos"
3+
description: "Workspaces en Rust: Organización Escalable para Proyectos Grandes"
44
draft: true
55
data:
6-
type: 'custom'
7-
topicLevel: 'start'
6+
type: "custom"
7+
topicLevel: "medium"
8+
width: 255
89
position:
9-
x: 200
10-
y: 750
11-
sourcePosition:
12-
error-handling: 'right'
13-
targetPosition:
14-
traits: 'bottom'
10+
x: -150
11+
y: 790
1512
---
13+
1614
# Workspaces en Rust: Organización Escalable para Proyectos Grandes
1715

1816
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.
@@ -63,6 +61,7 @@ my_project/
6361
## Configuración de un workspace
6462

6563
### Archivo `Cargo.toml` raíz
64+
6665
El archivo principal debe incluir la clave `[workspace]` y especificar los miembros del workspace:
6766

6867
```toml
@@ -75,6 +74,7 @@ members = [
7574
```
7675

7776
### Configuraciones compartidas
77+
7878
Puedes definir dependencias o configuraciones comunes en el archivo raíz:
7979

8080
```toml
@@ -101,15 +101,19 @@ Separar un proyecto en múltiples crates dentro de un workspace tiene sentido cu
101101
## Mejores prácticas para organizar workspaces
102102

103103
### 1. Usa la convención `crates/`
104+
104105
Agrupar los crates bajo `crates/` facilita la navegación y muestra claramente que forman parte del mismo proyecto.
105106

106107
### 2. Crea crates reutilizables
108+
107109
Si un módulo puede ser útil en otros proyectos, conviértelo en un crate separado dentro del workspace.
108110

109111
### 3. Mantén un crate "principal"
112+
110113
Usualmente, un proyecto tiene un crate principal (normalmente en `src/`) que actúa como ejecutable o punto de entrada, mientras los demás crates proveen funcionalidad modular.
111114

112115
### 4. Reexporta dependencias
116+
113117
Si varios crates usan las mismas dependencias, considera centralizarlas en un crate compartido y reexportarlas para simplificar:
114118

115119
```rust
@@ -124,6 +128,7 @@ Esto reduce la duplicación y mejora el tiempo de compilación.
124128
## Gestión de dependencias compartidas
125129

126130
### Usar `[workspace.dependencies]`
131+
127132
Define dependencias compartidas en el archivo raíz para evitar redundancia:
128133

129134
```toml
@@ -134,6 +139,7 @@ tokio = { version = "1", features = ["full"] }
134139
Esto asegura que todas las crates usen exactamente la misma versión de la dependencia.
135140

136141
### Información de paquetes compartida
142+
137143
Puedes especificar configuraciones comunes como autor o licencia en el archivo raíz:
138144

139145
```toml
@@ -147,6 +153,7 @@ license = "MIT"
147153
## Comandos comunes en un workspace
148154

149155
### 1. Afectar un crate específico
156+
150157
En workspaces, puedes usar la opción `-p` (o `--package`) para seleccionar un crate:
151158

152159
```bash
@@ -155,6 +162,7 @@ cargo test -p crate_b
155162
```
156163

157164
### 2. Agregar o eliminar dependencias
165+
158166
Cuando trabajas con crates específicos, usa `--manifest-path`:
159167

160168
```bash
@@ -163,6 +171,7 @@ cargo remove log --manifest-path crates/crate_b/Cargo.toml
163171
```
164172

165173
### 3. Crear un nuevo crate
174+
166175
Usa `cargo new` dentro del directorio de crates y luego agrégalo al workspace:
167176

168177
```bash
@@ -172,6 +181,7 @@ cargo new crates/crate_d --lib
172181
Luego, edita el archivo `Cargo.toml` principal para incluirlo en `[workspace.members]`.
173182

174183
### 4. Ejecutar un crate
184+
175185
Si el workspace contiene múltiples ejecutables, selecciona cuál ejecutar:
176186

177187
```bash
@@ -183,6 +193,7 @@ cargo run -p crate_c
183193
## Automatización y pruebas en workspaces
184194

185195
### Pruebas
196+
186197
Ejecuta las pruebas de todos los crates con:
187198

188199
```bash
@@ -196,6 +207,7 @@ cargo test -p crate_a
196207
```
197208

198209
### Benchmarks
210+
199211
Ejecuta benchmarks de todos los crates o selecciona uno:
200212

201213
```bash

content/4.cargo/index.md

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,20 @@
11
---
2-
title: 'Cargo'
3-
description: ''
2+
title: "Cargo"
3+
description: ""
44
draft: true
55
data:
6-
type: 'custom'
7-
topicLevel: 'start'
6+
type: "custom"
7+
topicLevel: "start"
88
position:
99
x: 200
1010
y: 750
1111
sourcePosition:
12-
error-handling: 'right'
12+
error-handling: "right"
1313
targetPosition:
14-
traits: 'bottom'
14+
traits: "bottom"
15+
modules: "left"
1516
---
17+
1618
## Introducción a Cargo: La Herramienta Esencial para el Ecosistema Rust
1719

1820
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.
@@ -56,9 +58,11 @@ cargo add serde
5658
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:
5759

5860
- **Dependencia de desarrollo:**
61+
5962
```bash
6063
cargo add --dev rand
6164
```
65+
6266
Esto agrega la dependencia bajo `[dev-dependencies]`, útil para herramientas y pruebas que no se incluyen en el binario final.
6367

6468
- **Dependencia opcional:**

0 commit comments

Comments
 (0)