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

let cmd = &args[1];

let num = &args[2];

// parse the number

let number: i32 = match num.parse() {

Ok(n) => {

n

},

Err(_) => {

eprintln!("ошибка: второй аргумент не является числом");

help();

return;

},

};

// парсим команду

match &cmd[..] {

"increase" => increase(number),

"decrease" => decrease(number),

_ => {

eprintln!("ошибка: неизвестная команда");

help();

},

}

},

// все остальные случаи

_ => {

// показываем сообщение с помощью

help();

}

}

}

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

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

$ ./match_args Rust

Это не ответ.

$ ./match_args 42

Это ответ!

$ ./match_args do something

ошибка: второй аргумент не является числом

usage:

match_args

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

match_args {increase|decrease}

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

$ ./match_args do 42

ошибка: неизвестная команда

usage:

match_args

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

match_args {increase|decrease}

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

$ ./match_args increase 42

43

<p id="foreign_function_interface"><strong><a l:href="#foreign_function_interface">Foreign Function Interface</a></strong></p>

Rust предоставляет интерфейс внешних функций (Foreign Function Interface, FFI) к библиотекам, написанным на языке С. Внешние функции должны быть объявлены внутри блока extern и аннотированы при помощи атрибута #[link], который содержит имя внешней библиотеки.

use std::fmt;

// Этот extern-блок подключает библиотеку libm

#[link(name = "m")]

extern {

// Это внешняя функция, которая считает квадратный корень

// комплексного числа одинарной точности

fn csqrtf(z: Complex) -> Complex;

fn ccosf(z: Complex) -> Complex;

}

// Так как вызовы внешних функций считаются unsafe,

// принято писать над ними обёртки.

fn cos(z: Complex) -> Complex {

unsafe { ccosf(z) }

}

fn main() {

// z = -1 + 0i

let z = Complex { re: -1., im: 0. };

// вызов внешней функции - unsafe операция

let z_sqrt = unsafe { csqrtf(z) };

println!("квадратный корень от {:?} равен {:?}", z, z_sqrt);

// вызов безопасного API в котором находится unsafe операция

println!("cos({:?}) = {:?}", z, cos(z));

}

// Минимальная реализация комплексного числа одинарной точности

#[repr(C)]

#[derive(Clone, Copy)]

struct Complex {

re: f32,

im: f32,

}

impl fmt::Debug for Complex {

fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {

if self.im < 0. {

write!(f, "{}-{}i", self.re, -self.im)

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

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

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

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

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

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