Найти в Дзене
Rust. Срезы.
Другим типом данных, который не забирает во владение данные является срез. Давайте рассмотрим одну проблему, нам нужно создать функцию в которую мы передаем строку, а она возвращает нам первое слово, а если программа не находит пробелы, то возвращает эту же строку. fn first_word(s: &String) -> usize { let bytes = s.as_bytes(); for (i, &item) in bytes.iter().enumerate() { if item == b' ' { return i; } } s.len() } Для того чтобы найти пробел, мы превращаем s в массив байт с помощью метода as_bytes(), далее мы сравниваем каждый байт с байтом пробела, если это будет байт пробела то возвратим индекс этого пробела...
3 года назад
Rust. Циклы.
Довольно часто программисту нужно повторно выполнять какие либо действия. У rust есть несколько видов цикла, которыми он может нас удовлетворить. Rust имеет три разные циклы, это loop, while, for. цикл loop. Для создания цикла loop нужно использовать ключевое слово loop и фигурные скобки. Пример: fn main() { loop { println!("hello"); } } этот цикл бесконечно раз будет выводить hello на консоль. Цикл loop сам является бесконечным, есть два способа выйти с него, это ключевые слова break и return. Сравним этот цикл с циклом while while true { println!("hi"); } loop { println!("hi"); } цикл loop...
3 года назад
Rust. Ссылочные переменные и заимствование.
Нам приходилось перемещать s в функцию и потом обратно его принимать с длиной s используя кортеж. Но теперь мы можем это более оптимизированном виде записать, используя ссылочные переменные. fn main() { let s = String::from("hello world"); let len = get_len(&s); } fn get_len(s: &String) -> usize { s.len() } Мы в качестве аргумента отправляем ссылку на объект и также в параметрах указываем что это ссылка типа String. И возвращаем только длину объекта, так как s не передавала владение в функцию, она всё еще действительна. Вспомним как хранится в памяти s. В стеке хранится...
3 года назад
Rust. Функции. Коментарии. Выражения if-else.
Одно из главных частей rust. Мы функции встречаем всегда, точкой входа в программу является функция main. Функция объявляется с помощью ключевого слова fn. Примеры объявления функции: fn main() { hello(); } fn hello() { println!("hello"); } Функцию можно вызвать где угодно. Rust не волнует где в каком месте определенна функция. Функция состоит из ключевого слова fn имени скобок и фигурных скобок. Параметры функции Функция может быть объявлена с параметрами, это специальные переменные. Пример fn main() { print(23); } fn print(n: i32) { println!("{}", n); } То что мы передаем в функцию это называется аргументом, а то что мы принимаем это параметр...
3 года назад
Rust. Синтаксис. Типы данных.
У rust синтаксис похож с языком программирования как c++. У rust также как и с++ точкой входа в программу является функция main. Она всегда вызывается автоматически первым. синтаксис: fn main() { } {} внутри фигурных скобок область видимости функции. Чтобы вывести что либо на консоль нужно использовать макрос println!("Hello world");. Если в конце какого либо названия есть восклицательный знак, то это макрос. В макрос передается аргумент, который макросы выведет. И в конце команды должна быть точка с запятой. Чтобы вывести какую любо переменную нужно первым аргументом отправить "{}" а дальше через...
3 года назад
Язык программирования Rust
Rust системный язык программирования, в первую очередь rust гарантирует производительность и безопасность памяти . У rust похожий синтаксис с C++. Rust может гарантировать безопасную работу с памятью используя систему Владения. Система владения это одна из уникальных особенностей языка rust. Благодаря этой системе управления памятью rust не приходится использовать автоматическую сборщик мусора (garbage colector) или ручное управление памятью. Сборщик мусора присутствует в языках как Python, Java, C Sharp и др. При использовании сборщика мусора программа теряет не большую часть производительности...
3 года назад