Ir al contenido

1. Cadena de herramientas y Cargo

Rust Función C# Java
rustup instala y actualiza las cadenas de herramientas instalador del SDK de .NET / global.json SDKMAN!, instaladores del JDK
cargo compilar, ejecutar, probar, añadir dependencias CLI de dotnet Maven / Gradle
crates.io registro público de paquetes NuGet Maven Central
rustc el compilador (Cargo lo invoca por ti) Roslyn (csc) javac

Rust se instala con rustup en todos los sistemas operativos. Rust usa el enlazador (linker) de la plataforma, así que cada sistema necesita también sus herramientas nativas de compilación de C.

Ventana de terminal
winget install Rustlang.Rustup

O descarga rustup-init.exe desde rustup.rs. La cadena de herramientas predeterminada apunta a MSVC, así que también necesitas las Visual Studio C++ Build Tools (el enlazador); rustup-init ofrece instalarlas si faltan. Después, abre una terminal nueva para que cargo esté en el PATH.

Después, en cualquier sistema:

Ventana de terminal
rustc --version # rustc 1.94.0 (4a4ef493e 2026-03-02)
cargo --version # cargo 1.94.0 (85eff7c80 2026-01-15)
rustup update # actualizar a la última versión estable
Ventana de terminal
cargo new hello
cd hello
cargo run
Creating binary (application) `hello` package
Compiling hello v0.1.0 (…\hello)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.01s
Running `target\debug\hello.exe`
Hello, world!

Las salidas de Linux y macOS provienen de los runners de la CI del curso, que usan un Cargo más reciente que añade la línea note:.

cargo new también ejecuta git init y escribe un .gitignore. La estructura:

hello/
├── Cargo.toml ← like .csproj or pom.xml
├── src/
│ └── main.rs ← entry point (a library would have src/lib.rs)
└── .gitignore
Cargo.toml
[package]
name = "hello"
version = "0.1.0"
edition = "2024"
[dependencies]
src/main.rs
fn main() {
println!("Hello, world!");
}
  • println! termina en ! porque es una macro, no una función (comprueba la cadena de formato en tiempo de compilación).
  • La edición (2024) es como <LangVersion> o --release: activa cambios del lenguaje sin romper los crates más antiguos, que siguen compilando con su propia edición.
Tarea Cargo dotnet Maven
Nueva aplicación cargo new app dotnet new console mvn archetype:generate
Nueva biblioteca cargo new --lib lib dotnet new classlib
Comprobación rápida de tipos cargo check
Compilar (debug) cargo build dotnet build mvn compile
Compilar (release) cargo build --release dotnet build -c Release mvn package
Ejecutar cargo run dotnet run mvn exec:java
Probar cargo test dotnet test mvn test
Añadir una dependencia cargo add rand dotnet add package editar pom.xml
Formatear cargo fmt dotnet format plugin Spotless
Análisis estático (lint) cargo clippy analizadores de Roslyn Error Prone, SpotBugs
Documentación de la API cargo doc --open documentación XML + DocFX javadoc
Ventana de terminal
cargo add rand
[dependencies]
rand = "0.10.2"
  • "0.10.2" significa compatible con 0.10.2 (caret de SemVer), no «exactamente 0.10.2».
  • Las versiones exactas resueltas se escriben en Cargo.lock — como packages.lock.json o un archivo de bloqueo de Gradle. Súbelo al control de versiones en las aplicaciones.
  • Las compilaciones debug y release van a target/debug y target/release (como bin/Debug y bin/Release).
  • rustup gestiona los compiladores, cargo hace todo lo demás y crates.io aloja los paquetes.
  • Cada sistema necesita su enlazador nativo: Visual Studio Build Tools, build-essential o las herramientas de línea de comandos de Xcode.
  • Cargo.toml + Cargo.lock.csproj + archivo de bloqueo / pom.xml.
  • cargo check para una respuesta rápida, cargo build --release para binarios optimizados.
  1. Crea un proyecto llamado dice, añade el crate rand y busca en Cargo.lock qué versión se resolvió realmente.
Solución
Ventana de terminal
cargo new dice
cd dice
cargo add rand
cargo build
Select-String -Path Cargo.lock -Pattern 'name = "rand"' -Context 0,1

Cargo.toml contiene el requisito que pediste; Cargo.lock contiene la versión exacta (y cada dependencia transitiva) que se eligió.

  1. ¿Cuál es la diferencia entre cargo check y cargo build, y cuándo usarías cada uno?
Solución

cargo check comprueba los tipos y los préstamos sin producir un binario, así que es rápido — úsalo mientras editas. cargo build además genera código máquina — úsalo cuando necesites ejecutar el programa, y cargo build --release para una versión optimizada.