Читаем Rust на примерах полностью

println!("! {:?}", why.kind());

});

println!("`rmdir a/c/d`");

// Удаляем пустую директорию, получаем `io::Result<()>`

fs::remove_dir("a/c/d").unwrap_or_else(|why| {

println!("! {:?}", why.kind());

});

}

Вот ожидаемый результат:

$ rustc fs.rs && ./fs

`mkdir a`

`echo hello > a/b.txt`

`mkdir -p a/c/d`

`touch a/c/e.txt`

`ln -s ../b.txt a/c/b.txt`

`cat a/c/b.txt`

> hello

`ls a`

> "a/b.txt"

> "a/c"

`rm a/c/e.txt`

`rmdir a/c/d`

И конечное состояние директории a:

$ tree a

a

|-- b.txt

`-- c

`-- b.txt -> ../b.txt

1 directory, 2 files

Альтернативный путь определения функции cat - с нотацией ?:

fn cat(path: &Path) -> io::Result {

let mut f = File::open(path)?;

let mut s = String::new();

f.read_to_string(&mut s)?;

Ok(s)

}

<p id="Смотрите_также_69"><strong><a l:href="#Смотрите_также_69">Смотрите также:</a></strong></p>

cfg!

<p id="Аргументы_программы"><strong><a l:href="#Аргументы_программы">Аргументы программы</a></strong></p><p id="Стандартная_библиотека"><strong><a l:href="#Стандартная_библиотека">Стандартная библиотека</a></strong></p>

Аргументы командной строки могут быть доступны при помощи std::env::args, который возвращает итератор, который выдаёт String для каждого аргумента:

use std::env;

fn main() {

let args: Vec = env::args().collect();

// Первый аргумент - путь, используемый для вызова программы.

println!("Мой путь {}.", args[0]);

// Оставшиеся аргументы - переданные в командной строке параметры.

// Вызов программы выглядит так:

// $ ./args arg1 arg2

println!("У меня {:?} аргумента: {:?}.", args.len() - 1, &args[1..]);

}

הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

$ ./args 1 2 3

Мой путь ./args.

У меня 3 аргумента: ["1", "2", "3"].

<p id="Крейты"><strong><a l:href="#Крейты">Крейты</a></strong></p>

В качестве альтернативы, существует несколько крейтов, которые предоставляют дополнительную функциональность при создании приложений командной сроки. Rust Cookbook показывает лучшие практики, как использовать один из самых популярных крейтов для аргументов командной строки, clap.

<p id="Парсинг_аргументов"><strong><a l:href="#Парсинг_аргументов">Парсинг аргументов</a></strong></p>

Сопоставление может быть использовано для разбора простых аргументов:

use std::env;

fn increase(number: i32) {

println!("{}", number + 1);

}

fn decrease(number: i32) {

println!("{}", number - 1);

}

fn help() {

println!("usage:

match_args

Проверяет является ли данная строка ответом.

match_args {{increase|decrease}}

Увеличивает или уменьшает число на 1.");

}

fn main() {

let args: Vec = env::args().collect();

match args.len() {

// аргументы не переданы

1 => {

println!("Я - 'match_args'. Попробуйте передать аргументы!");

},

// передан один аргумент

2 => {

match args[1].parse() {

Ok(42) => println!("Это ответ!"),

_ => println!("Это не ответ."),

}

},

// переданы одна команда и один аргумент

3 => {

Перейти на страницу:

Похожие книги

Писать нельзя молчать
Писать нельзя молчать

Неужели ты опять отложишь мечту – написать книгу? Опять занят и считаешь затею глупостью? А ведь чтобы сотворить историю нужно совсем немного: капелька поддержки на старте, чуток теории в процессе и безудержная энергия творчества, которую я помогу тебе разбудить. Или вспомнить.Мир живёт историями, и каждый может стать увлекательным рассказчиком. В этой книге я дам ответы на самые животрепещущие вопросы писателя-новичка. Эта книга для тех, кто:• Хочет писать истории, но откладывает дело в долгий ящик;• Писал раньше, но разуверился в своих силах;• Боится показаться глупым мечтателем в глазах близких;• Боится совершить ошибки;• Просто застрял и не знает, как воплотить свою идею;• Давно пишет, но не может довести до конца ни одну историю;• Не знает, как найти свою аудиторию, как с ней общаться;• Хочет почерпнуть вдохновение от общения с коллегой по писательскому делу.Эта книга написана без лишнего пафоса и с конкретными шагами на внедрение. Все, что остается, это сесть поудобнее и приступить к чтению.В формате PDF A4 сохранен издательский макет книги.

Юрий Михайлович Окунев , Юрий Окунев

Хобби и ремесла / Учебные пособия, самоучители / Дом и досуг