Olej писал(а): ↑27 окт 2022, 19:43
в издательстве BHV выходит книга
Olej писал(а): ↑27 окт 2022, 19:43
Здесь полный архив кодов к книге:
Пойду по этой книге ... точнее по примерам из архивов кодов к книге.
Код: Выделить всё
olej@R420:~$ which cargo
/home/olej/.cargo/bin/cargo
Создаю
проект (на любом пути):
Код: Выделить всё
olej@R420:~$ cargo new hello
Created binary (application) `hello` package
olej@R420:~$ tree hello
hello
├── Cargo.toml
└── src
└── main.rs
1 directory, 2 files
Вот он
создал (подтянул):
Код: Выделить всё
olej@R420:~$ cat hello/src/main.rs
fn main() {
println!("Hello, world!");
}
Компиляция + выполнение:
Код: Выделить всё
olej@R420:~$ cd hello/
olej@R420:~/hello$ cargo run
Compiling hello v0.1.0 (/home/olej/hello)
Finished dev [unoptimized + debuginfo] target(s) in 0.74s
Running `target/debug/hello`
Hello, world!
Вот что произошло (поменялось):
Код: Выделить всё
olej@R420:~/hello$ tree
.
├── Cargo.lock
├── Cargo.toml
├── src
│ └── main.rs
└── target
├── CACHEDIR.TAG
└── debug
├── build
├── deps
│ ├── hello-f10f454b064da970
│ └── hello-f10f454b064da970.d
├── examples
├── hello
├── hello.d
└── incremental
└── hello-2mghwo7kpinkd
├── s-gew0usabs3-e611k.lock
└── s-gew0usabs3-e611k-n9jek53tv1vs
├── 1d6crpaiajeebzfe.o
├── 3a44f156fv0rzb76.o
├── 3g9kzsj53phza7ii.o
├── 42jn790wo4cvbi0y.o
├── 48bco2yrw0xezka8.o
├── 54y1yn6ksdtd3wa1.o
├── 5doja4y44nwg3ez0.o
├── 5dxeof03oiet4swm.o
├── dep-graph.bin
├── query-cache.bin
└── work-products.bin
9 directories, 20 files
Исполнимый файл:
Код: Выделить всё
olej@R420:~/hello$ ./target/debug/hello
Hello, world!
olej@R420:~/hello$ ls -l ./target/debug/hello
-rwxrwxr-x 2 olej olej 3898296 окт 28 16:39 ./target/debug/hello
Сборка
динамическая:
Код: Выделить всё
olej@R420:~/hello$ ldd ./target/debug/hello
linux-vdso.so.1 (0x00007ffea3172000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fbf643ad000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fbf6438a000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fbf64384000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fbf64192000)
/lib64/ld-linux-x86-64.so.2 (0x00007fbf64440000)
Из книги:
Имеющийся в Rust инструмент под названием cargo предоставляет как систему
сборки, так и диспетчер пакетов. То есть, cargo знает, как превратить ваш Rust-код
в исполняемые двоичные файлы, а также может управлять процессом загрузки и
компиляции проектных зависимостей.
cargo new создает для вас проект, который построен по стандартному шаблону.
Создание проекта с помощью Cargo
Cargo ожидает, что ваши исходные файлы находятся внутри каталога src. Каталог верхнего уровня проекта предназначен только для файлов README, информации о лицензии, файлы конфигурации и чего то ещё не относящего к вашему коду. Использование Cargo помогает организовывать проект. Есть место для всего и все находится на своём месте.
Если вы начали проект без использования Cargo, как мы делали для "Hello, world!" проекта, то можно конвертировать его в проект с использованием Cargo. Переместите код в подкаталог src и создайте соответствующий файл Cargo.toml в папке.