Вы также можете просто поместить двоичные источники в src/bin
, а остальную часть ваших источников - в src
. Вы можете увидеть пример в my project. Вам совсем не нужно изменять свой Cargo.toml
, и каждый исходный файл будет скомпилирован в двоичный файл с тем же именем.
конфигурация Другого ответа является то заменена:
$ tree
.
├── Cargo.toml
└── src
├── bin
│ └── mybin.rs
└── lib.rs
$ cat Cargo.toml
[package]
name = "example"
version = "0.0.1"
authors = ["An Devloper <[email protected]>"]
SRC/lib.rs
use std::error::Error;
pub fn really_complicated_code(a: u8, b: u8) -> Result<u8, Box<Error>> {
Ok(a + b)
}
SRC/bin/mybin.rs
extern crate example;
fn main() {
println!("I'm using the library: {:?}", example::really_complicated_code(1, 2));
}
И выполните его:
$ cargo run --bin mybin
I'm using the library: Ok(3)
Кроме того, вы можете просто создать src/main.rs
, который будет использоваться в качестве де-факто исполняемого файла. К сожалению, это противоречит команде cargo doc
:
Невозможно документировать пакет, в котором библиотека и двоичные файлы имеют одинаковое имя. Рассмотрим переименования одной или маркировки цели, как doc = false
Спасибо Doug, я попробую! Являются ли #! [Crate_name =] и #! [Crate_type] аннотации необязательными? –
Если вы используете Cargo, эти опции не нужны, потому что Cargo передает их в качестве флагов компилятора. Если вы запустите 'load build -verbose', вы увидите их в командной строке' rustc'. –
Знаете ли вы, почему '[[bin]]' - массив таблиц? Зачем использовать '[[bin]]', а не '[bin]'? По всей видимости, нет никакой документации по этому вопросу. – CMCDragonkai