Skip to content

Commit 4172908

Browse files
committed
feat(content): add cargo format
1 parent 681b108 commit 4172908

File tree

1 file changed

+179
-0
lines changed

1 file changed

+179
-0
lines changed

content/4.cargo/1.format.md

Lines changed: 179 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,179 @@
1+
---
2+
title: 'Cargo'
3+
description: ''
4+
draft: true
5+
data:
6+
type: 'custom'
7+
topicLevel: 'start'
8+
position:
9+
x: 200
10+
y: 750
11+
sourcePosition:
12+
error-handling: 'right'
13+
targetPosition:
14+
traits: 'bottom'
15+
---
16+
## `cargo fmt`: El Formateador Oficial de Rust para Código Limpio y Consistente
17+
18+
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`.
19+
20+
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.
21+
22+
---
23+
24+
### ¿Qué es `cargo fmt` y por qué es útil?
25+
26+
`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:
27+
28+
1. **Consistencia:** Todo el código sigue un estándar, independientemente de quién lo escribió.
29+
2. **Legibilidad:** Mejora la comprensión del código al aplicar un formato claro y predecible.
30+
3. **Productividad:** Reduce el tiempo dedicado a debates sobre estilo de código en revisiones de código (code reviews).
31+
32+
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.
33+
34+
---
35+
36+
### Instalación y Configuración Inicial
37+
38+
#### Instalación de `rustfmt`
39+
40+
Si tienes Rust instalado mediante `rustup`, `rustfmt` ya debería estar disponible. Si no, puedes instalarlo fácilmente con el siguiente comando:
41+
42+
```bash
43+
rustup component add rustfmt
44+
```
45+
46+
Este comando asegura que `rustfmt` esté disponible para tu versión actual de Rust.
47+
48+
#### Verificando la instalación
49+
50+
Para confirmar que `rustfmt` está instalado, puedes ejecutar:
51+
52+
```bash
53+
cargo fmt --version
54+
```
55+
56+
Esto debería mostrar la versión instalada de `rustfmt`.
57+
58+
---
59+
60+
### Uso Básico de `cargo fmt`
61+
62+
Para formatear todo tu proyecto, simplemente ejecuta:
63+
64+
```bash
65+
cargo fmt
66+
```
67+
68+
Esto aplicará las reglas de estilo a todos los archivos en tu proyecto, incluidos los módulos en subdirectorios. Si deseas verificar el formato sin modificar los archivos (modo de comprobación), usa:
69+
70+
```bash
71+
cargo fmt --check
72+
```
73+
74+
El modo `--check` es especialmente útil en pipelines de CI para validar que el código esté correctamente formateado antes de fusionar cambios.
75+
76+
---
77+
78+
### Configuración de `rustfmt`
79+
80+
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.
81+
82+
#### Ejemplo de archivo `rustfmt.toml`
83+
84+
```toml
85+
# rustfmt.toml
86+
max_width = 100 # Establece el ancho máximo de las líneas
87+
tab_spaces = 4 # Usa 4 espacios por tabulación
88+
use_small_heuristics = "Off" # Desactiva heurísticas para expresiones cortas
89+
newline_style = "Unix" # Usa saltos de línea estilo Unix (\n)
90+
```
91+
92+
#### Configuración desde `Cargo.toml`
93+
94+
Si deseas asegurarte de que todos los colaboradores utilicen la configuración adecuada, puedes especificar el archivo `rustfmt.toml` en el archivo `Cargo.toml`:
95+
96+
```toml
97+
[package.metadata.rustfmt]
98+
config-path = "rustfmt.toml"
99+
```
100+
101+
Esto garantiza que `cargo fmt` use la configuración personalizada, incluso si el archivo `rustfmt.toml` está en una ubicación no estándar.
102+
103+
---
104+
105+
### Integración de `cargo fmt` en Pipelines de CI
106+
107+
#### Usando GitHub Actions
108+
109+
Aquí tienes un ejemplo de configuración para GitHub Actions que valida el formato de código en cada push:
110+
111+
```yaml
112+
name: Check Code Format
113+
114+
on:
115+
push:
116+
branches:
117+
- main
118+
pull_request:
119+
120+
jobs:
121+
format-check:
122+
runs-on: ubuntu-latest
123+
steps:
124+
- name: Checkout Code
125+
uses: actions/checkout@v3
126+
127+
- name: Install Rust
128+
uses: actions-rs/toolchain@v1
129+
with:
130+
profile: minimal
131+
toolchain: stable
132+
133+
- name: Install rustfmt
134+
run: rustup component add rustfmt
135+
136+
- name: Check Code Format
137+
run: cargo fmt --all --check
138+
```
139+
140+
Este pipeline asegura que el código esté correctamente formateado antes de fusionar cambios en la rama principal.
141+
142+
#### Usando GitLab CI/CD
143+
144+
En GitLab CI/CD, puedes configurar un trabajo para validar el formato del código de la siguiente manera:
145+
146+
```yaml
147+
stages:
148+
- format
149+
150+
format_check:
151+
stage: format
152+
image: rust:latest
153+
script:
154+
- rustup component add rustfmt
155+
- cargo fmt --all --check
156+
only:
157+
- merge_requests
158+
- main
159+
```
160+
161+
Este trabajo valida el formato en los cambios propuestos (merge requests) y en la rama principal.
162+
163+
---
164+
165+
### Buenas Prácticas y Recomendaciones
166+
167+
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.
168+
169+
2. **Automatiza validaciones:** Usa `cargo fmt --check` en tus pipelines para garantizar la consistencia del formato en todos los cambios.
170+
171+
3. **Mantén una configuración compartida:** Incluye un archivo `rustfmt.toml` en el repositorio para que todos los colaboradores usen el mismo estilo.
172+
173+
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.
174+
175+
---
176+
177+
### Conclusión
178+
179+
`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! 🚀

0 commit comments

Comments
 (0)