No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Convierte tus certificados en títulos universitarios en USA

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

18 Días
9 Hrs
59 Min
46 Seg

Creando un nuevo proyecto en Rust

5/20
Recursos

Cuando instalas un nuevo lenguaje de programación o tecnología, la primera tarea es realizar el conocido “Hola Mundo” para corroborar que todo esté funcionando correctamente.

Hola Mundo con Rust

En Rust, crear tu primer proyecto es súper sencillo. Basta con utilizar el comando cargo new . El CLI de Rust creará los siguientes archivos:

Screenshot from 2022-07-11 10-47-07.png

De arriba hacia abajo:

  • src: Directorio principal con todo el código fuente del proyecto.
  • main.rs: Archivo principal para lanzar el proyecto.
  • .gitignore: Archivo para indicarle a GIT qué archivos/directorios ignorar.
  • Cargo.toml: Archivo que contiene la metadata y dependencias del proyecto.

El archivo main.ts contiene un código muy sencillo para ejecutar tu primer proyecto en Rust.

fn main() {
    println!("Hello, world!");
}

Con el comando cargo run, deberías visualizar Hello, world! en la terminal de comandos.

¡Felicidades! Ya has realizado tu primera ejecución de un proyecto en Rust.


Contribución creada por: Kevin Fiorentino.

Aportes 28

Preguntas 5

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Estoy usando WSL y en el proyecto además de crearse Cargo.toml, se inicializó GIt

Que bonita sorpresa 😃

Si trabajan con windows les aconsejo hacerlo con wsl ya que visual studio build da dolor de cabeza y muchos problemas

Felicidades a todos por su tal vez primer hola mundo en Rust… Bueno, Hola Platzi.

Si ya han creado la carpeta del proyecto pueden hacer cargo init en vez de cargo new <project> para que no les cree una subcarpeta sino que ponga el src y el Cargo.toml directamente en la carpeta donde se encuentran.

La funcion main() es una funcion especial en el entorno de Rust, esta funcion es la encargada de arrancar la aplicacion en todos los programas o aplicaciones desarrollados con este lenguaje

PD: Si estas en linux y te sale el error: linker cc not found. Sigan este link: https://stackoverflow.com/questions/52445961/how-do-i-fix-the-rust-error-linker-cc-not-found-for-debian-on-windows-10

Si alguien tiene el problema de no poder compilar aqui se explica como solucionarlo en WSL

Tenía un error linkerccnot found.
Se solucionó al hacer sudo apt-get update y sudo apt install build-essential

Un hack pueden abrir la terminal con ctrl + ñ

Si estan en windows con wsl o linux y les sale el error de :

error: linker `cc` not found
  |
  = note: No such file or directory (os error 2)

Usa este comando de linux para solucionarlo
sudo apt install build-essential

Consejo para los que estan tomando este curso de absoluto cero y es la primera vez que trabajan con VisualStudioCode (VSC):
no olviden guardar los cambios con ctrl + s para que se muestren esos cambios en la terminal, veran que se ilumina un punto blanco cuando le hacen cualquier tipo de cambio.

lo menciono porque en todos los cursos de cualquier lenguaje siempre omiten decir que se debe guardar y con que teclas se ejecuta el guardado 😊

@hackquiarom
gracias

Para ejecutar el proyecto desde la terminal escribir
cargo run
Resultado

   Compiling platzi-curso v0.1.0 (/rust/platzi-curso)
    Finished dev [unoptimized + debuginfo] target(s) in 0.28s
     Running `target/debug/platzi-curso`
Hello, world!

y la estructura del proyecto muestra todo esto

(base) yomero@yomero-machina:~/rust/platzi-curso$ ls -lR
.:
total 16
-rw-rw-r-- 1 yomero yomero  156 ago 20 14:53 Cargo.lock
-rw-rw-r-- 1 yomero yomero  181 ago 20 14:51 Cargo.toml
drwxrwxr-x 2 yomero yomero 4096 ago 20 14:51 src
drwxrwxr-x 3 yomero yomero 4096 ago 20 14:53 target

./src:
total 4
-rw-rw-r-- 1 yomero yomero 45 ago 20 14:51 main.rs

./target:
total 8
-rw-rw-r-- 1 yomero yomero  177 ago 20 14:53 CACHEDIR.TAG
drwxrwxr-x 7 yomero yomero 4096 ago 20 14:56 debug

./target/debug:
total 3792
drwxrwxr-x 2 yomero yomero    4096 ago 20 14:53 build
drwxrwxr-x 2 yomero yomero    4096 ago 20 14:56 deps
drwxrwxr-x 2 yomero yomero    4096 ago 20 14:53 examples
drwxrwxr-x 5 yomero yomero    4096 ago 20 14:56 incremental
-rwxrwxr-x 2 yomero yomero 3859376 ago 20 14:56 platzi-curso
-rw-rw-r-- 1 yomero yomero     117 ago 20 14:56 platzi-curso.d

./target/debug/build:
total 0

./target/debug/deps:
total 3784
-rw-rw-r-- 1 yomero yomero       0 ago 20 14:53 libplatzi_curso-1e07cfa96523b6c4.rmeta
-rw-rw-r-- 1 yomero yomero       0 ago 20 14:53 libplatzi_curso-4b9f6b89c3f4a846.rmeta
-rw-rw-r-- 1 yomero yomero     223 ago 20 14:53 platzi_curso-1e07cfa96523b6c4.d
-rw-rw-r-- 1 yomero yomero     223 ago 20 14:53 platzi_curso-4b9f6b89c3f4a846.d
-rwxrwxr-x 2 yomero yomero 3859376 ago 20 14:56 platzi_curso-b3fcc9d8587c7101
-rw-rw-r-- 1 yomero yomero     217 ago 20 14:56 platzi_curso-b3fcc9d8587c7101.d

./target/debug/examples:
total 0

./target/debug/incremental:
total 12
drwxrwxr-x 3 yomero yomero 4096 ago 20 14:53 platzi_curso-1kd1hfoqtyd2s
drwxrwxr-x 3 yomero yomero 4096 ago 20 14:56 platzi_curso-30uhnpr5x5v5k
drwxrwxr-x 3 yomero yomero 4096 ago 20 14:53 platzi_curso-37u0s7tmemup9

./target/debug/incremental/platzi_curso-1kd1hfoqtyd2s:
total 4
drwxrwxr-x 2 yomero yomero 4096 ago 20 14:53 s-gcrgcb42eg-1x3k6fj-24kvvvm5mw5xd
-rwx------ 1 yomero yomero    0 ago 20 14:53 s-gcrgcb42eg-1x3k6fj.lock

./target/debug/incremental/platzi_curso-1kd1hfoqtyd2s/s-gcrgcb42eg-1x3k6fj-24kvvvm5mw5xd:
total 64
-rw-rw-r-- 1 yomero yomero 34162 ago 20 14:53 dep-graph.bin
-rw-rw-r-- 1 yomero yomero 20971 ago 20 14:53 query-cache.bin
-rw-rw-r-- 1 yomero yomero    37 ago 20 14:53 work-products.bin

./target/debug/incremental/platzi_curso-30uhnpr5x5v5k:
total 4
drwxrwxr-x 2 yomero yomero 4096 ago 20 14:56 s-gcrgelmw9i-qjkck4-3c0e61urk8r6c
-rwx------ 1 yomero yomero    0 ago 20 14:56 s-gcrgelmw9i-qjkck4.lock

./target/debug/incremental/platzi_curso-30uhnpr5x5v5k/s-gcrgelmw9i-qjkck4-3c0e61urk8r6c:
total 168
-rw-rw-r-- 1 yomero yomero  9536 ago 20 14:56 122jwq2ytdwpwna5.o
-rw-rw-r-- 1 yomero yomero  4608 ago 20 14:56 13ae89ygf1rtd8xc.o
-rw-rw-r-- 1 yomero yomero  6984 ago 20 14:56 1wwi7m72ahqetgwr.o
-rw-rw-r-- 1 yomero yomero  3160 ago 20 14:56 1ytu7juna3q1uq8z.o
-rw-rw-r-- 1 yomero yomero  7648 ago 20 14:56 36t22ymn6gv0dede.o
-rw-rw-r-- 1 yomero yomero  4768 ago 20 14:56 4w005rjywvu38mtx.o
-rw-rw-r-- 1 yomero yomero 79487 ago 20 14:56 dep-graph.bin
-rw-rw-r-- 1 yomero yomero  4128 ago 20 14:56 in4aoc5qp85yj9g.o
-rw-rw-r-- 1 yomero yomero  3672 ago 20 14:56 pthzp219cra87mm.o
-rw-rw-r-- 1 yomero yomero 24473 ago 20 14:56 query-cache.bin
-rw-rw-r-- 1 yomero yomero   465 ago 20 14:56 work-products.bin

./target/debug/incremental/platzi_curso-37u0s7tmemup9:
total 4
drwxrwxr-x 2 yomero yomero 4096 ago 20 14:53 s-gcrgcb42cn-15p76a6-12g2dswvbo7a6
-rwx------ 1 yomero yomero    0 ago 20 14:53 s-gcrgcb42cn-15p76a6.lock

./target/debug/incremental/platzi_curso-37u0s7tmemup9/s-gcrgcb42cn-15p76a6-12g2dswvbo7a6:
total 56
-rw-rw-r-- 1 yomero yomero 28710 ago 20 14:53 dep-graph.bin
-rw-rw-r-- 1 yomero yomero 19797 ago 20 14:53 query-cache.bin
-rw-rw-r-- 1 yomero yomero    37 ago 20 14:53 work-products.bin

```

Si estás en Mac y te aparece

error: linking with `cc` failed: exit status: 1 

Intenta, en tu terminal, usar el comando

xcode-select --install

Puede que te estén faltando unas dependencias para compilar 😊

para crear un proyecto desde la terminal

cargo new platzi-curso

y el resultado es

Created binary (application) `platzi-curso` package
![](https://static.platzi.com/media/user_upload/Captura-22516c54-4516-4966-82a1-4ccd29a76108.jpg) Lo hice en la terminal de RustRover, se ve bueno también
funcionando: ![](https://static.platzi.com/media/user_upload/image-019ad345-e79e-4702-9336-c331383e733b.jpg)
**cargo new \<project-name>:** Comando para crear un nuevo proyecto **cargo run:** Comando para compilar y ejecutar el archivo main
me da este error cuando intento este comando "`cargo run`" Como lo soluciono? error: linking with `cc` failed: exit status: 1 | \= note: LC\_ALL="C" PATH="/home/mateo/.rustup/toolchains/stable-x86\_64-unknown-linux-gnu/lib/rustlib/x86\_64-unknown-linux-gnu/bin:/home/mateo/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" VSLANG="1033" "cc" "-m64" "/tmp/rustcPk7vve/symbols.o" "/home/mateo/Desktop/dev/platzi-curso/target/debug/deps/platzi\_curso-b4da47aac2508e97.1y7dzvuyedisytyp.rcgu.o" "/home/mateo/Desktop/dev/platzi-curso/target/debug/deps/platzi\_curso-b4da47aac2508e97.2f6gxrexmd4b5dua.rcgu.o" "/home/mateo/Desktop/dev/platzi-curso/target/debug/deps/platzi\_curso-b4da47aac2508e97.2i2ul4sidg0blwn9.rcgu.o" "/home/mateo/Desktop/dev/platzi-curso/target/debug/deps/platzi\_curso-b4da47aac2508e97.2ns1l58d5gkktueq.rcgu.o" "/home/mateo/Desktop/dev/platzi-curso/target/debug/deps/platzi\_curso-b4da47aac2508e97.dv8ueqnc7gudat0.rcgu.o" "/home/mateo/Desktop/dev/platzi-curso/target/debug/deps/platzi\_curso-b4da47aac2508e97.ru0ku8dkgk2loc9.rcgu.o" "/home/mateo/Desktop/dev/platzi-curso/target/debug/deps/platzi\_curso-b4da47aac2508e97.184xxmngfuaseiu3.rcgu.o" "-Wl,--as-needed" "-L" "/home/mateo/Desktop/dev/platzi-curso/target/debug/deps" "-L" "/home/mateo/.rustup/toolchains/stable-x86\_64-unknown-linux-gnu/lib/rustlib/x86\_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "/home/mateo/.rustup/toolchains/stable-x86\_64-unknown-linux-gnu/lib/rustlib/x86\_64-unknown-linux-gnu/lib/libstd-b149a04e58514815.rlib" "/home/mateo/.rustup/toolchains/stable-x86\_64-unknown-linux-gnu/lib/rustlib/x86\_64-unknown-linux-gnu/lib/libpanic\_unwind-66ab26aded3b7021.rlib" "/home/mateo/.rustup/toolchains/stable-x86\_64-unknown-linux-gnu/lib/rustlib/x86\_64-unknown-linux-gnu/lib/libobject-203bd07e88f5499a.rlib" "/home/mateo/.rustup/toolchains/stable-x86\_64-unknown-linux-gnu/lib/rustlib/x86\_64-unknown-linux-gnu/lib/libmemchr-944cc9212e8025af.rlib" "/home/mateo/.rustup/toolchains/stable-x86\_64-unknown-linux-gnu/lib/rustlib/x86\_64-unknown-linux-gnu/lib/libaddr2line-75c8462d252ad270.rlib" "/home/mateo/.rustup/toolchains/stable-x86\_64-unknown-linux-gnu/lib/rustlib/x86\_64-unknown-linux-gnu/lib/libgimli-22352d501faf9820.rlib" "/home/mateo/.rustup/toolchains/stable-x86\_64-unknown-linux-gnu/lib/rustlib/x86\_64-unknown-linux-gnu/lib/librustc\_demangle-572a7f05bd234c36.rlib" "/home/mateo/.rustup/toolchains/stable-x86\_64-unknown-linux-gnu/lib/rustlib/x86\_64-unknown-linux-gnu/lib/libstd\_detect-34e8486002d91949.rlib" "/home/mateo/.rustup/toolchains/stable-x86\_64-unknown-linux-gnu/lib/rustlib/x86\_64-unknown-linux-gnu/lib/libhashbrown-42409efdb396b783.rlib" "/home/mateo/.rustup/toolchains/stable-x86\_64-unknown-linux-gnu/lib/rustlib/x86\_64-unknown-linux-gnu/lib/librustc\_std\_workspace\_alloc-4fd4035a411de739.rlib" "/home/mateo/.rustup/toolchains/stable-x86\_64-unknown-linux-gnu/lib/rustlib/x86\_64-unknown-linux-gnu/lib/libminiz\_oxide-8a674d35d1eb7c28.rlib" "/home/mateo/.rustup/toolchains/stable-x86\_64-unknown-linux-gnu/lib/rustlib/x86\_64-unknown-linux-gnu/lib/libadler-5e6a3884dc55082a.rlib" "/home/mateo/.rustup/toolchains/stable-x86\_64-unknown-linux-gnu/lib/rustlib/x86\_64-unknown-linux-gnu/lib/libunwind-49f8650898f03f75.rlib" "/home/mateo/.rustup/toolchains/stable-x86\_64-unknown-linux-gnu/lib/rustlib/x86\_64-unknown-linux-gnu/lib/libcfg\_if-55f4044cbfa42566.rlib" "/home/mateo/.rustup/toolchains/stable-x86\_64-unknown-linux-gnu/lib/rustlib/x86\_64-unknown-linux-gnu/lib/liblibc-423f83c599bec464.rlib" "/home/mateo/.rustup/toolchains/stable-x86\_64-unknown-linux-gnu/lib/rustlib/x86\_64-unknown-linux-gnu/lib/liballoc-9a7d54e02ce8af0d.rlib" "/home/mateo/.rustup/toolchains/stable-x86\_64-unknown-linux-gnu/lib/rustlib/x86\_64-unknown-linux-gnu/lib/librustc\_std\_workspace\_core-c9af672b38877288.rlib" "/home/mateo/.rustup/toolchains/stable-x86\_64-unknown-linux-gnu/lib/rustlib/x86\_64-unknown-linux-gnu/lib/libcore-951d12e06c2387f8.rlib" "/home/mateo/.rustup/toolchains/stable-x86\_64-unknown-linux-gnu/lib/rustlib/x86\_64-unknown-linux-gnu/lib/libcompiler\_builtins-9908bc779e4ab019.rlib" "-Wl,-Bdynamic" "-lgcc\_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc" "-Wl,--eh-frame-hdr" "-Wl,-z,noexecstack" "-L" "/home/mateo/.rustup/toolchains/stable-x86\_64-unknown-linux-gnu/lib/rustlib/x86\_64-unknown-linux-gnu/lib" "-o" "/home/mateo/Desktop/dev/platzi-curso/target/debug/deps/platzi\_curso-b4da47aac2508e97" "-Wl,--gc-sections" "-pie" "-Wl,-z,relro,-z,now" "-nodefaultlibs" \= note: /usr/bin/ld: cannot find Scrt1.o: No such file or directory /usr/bin/ld: cannot find crti.o: No such file or directory collect2: error: ld returned 1 exit status error: could not compile `platzi-curso` (bin "platzi-curso") due to previous error

Siempre es emocionante escribir “hola mundo”

Para los que vienen de Python. fn main() {} en Rust es como usar if __name__ == '__main__':. Aunque cómo dijo el profesor en los comentarios, eso se puede cambiar.

Si están usando Neovim cómo yo, les recomiendo usar coc-rust-analyzer para que nos ayude a detectar errores y autocompletar el código.

¡Que gran forma de iniciar!

No se escucha

si quiere abrir la terminal con atajo de teclado haz lo siguiente:

// teclado español
ctrl + ñ
// teclado ingles 
ctrl + `

Es bastante facil empezar un proyecto en Rust, a seguir

fn main() {
    let name: &str = "Maycol";
    let age: u8 = 31;

    let min_temp: i8 = -21;
    let max_temp: i8 = 38;

    say_hello(name, age);
    print_temp(min_temp, max_temp);
}

fn say_hello(name: &str, age: u8) {
    return println!("Hello {}, tu edad es de {}", name, age)
}

fn print_temp(min_temp: i8, max_temp: i8) {
    return println!("La temperatura maxima en Deggendorf fue de {} y la mas alta fue de {}", min_temp, max_temp)
}