Questions tagged [rust]

Rust — язык системного программирования, который гарантирует безопасный доступ к памяти без использования сборки мусора. Он нацелен на безопасность, скорость и конкурентность.

Общая информация

Rust — мультипарадигменный компилируемый язык системного программирования, разрабатываемый в Mozilla Research.

Rust отличается от языков с полным контролем памяти (C, C++) механизмом жёсткого контроля использования памяти, предотвращающим целый класс ошибок. Однако в отличие от таких языков как Java или C#, в Rust нет сборщика мусора — контроль над использованием памяти происходит на этапе компиляции.


Ссылки


Перед тем как публиковать вопрос

Внимательно прочитайте сообщение об ошибке. Первая строка сообщения должна иметь вид:

error: use of moved value: `foo` [E0382]

чтобы узнать больше о типе ошибки, наберите в консоли:

rustc --explain E0382  # вместо `E0382` подставьте код своей ошибки

эта команда выведет объяснение типа ошибки. Если что-то в объяснении будет непонятно, обратитесь к документации. Если и это не поможет, задавайте вопрос с меткой .

316 questions
7
votes
0 answers

Как функции узнают, какую специализацию шаблона использовать?

В данном выражении, как компилятор выводит, какую специализацию шаблона parse() использовать? let guess: u8 = "-42".parse().expect("Not a number!"); Откуда он узнаёт, что нужно использовать именно вариант parse() для u8, а не для f64 например?…
Fat-Zer
  • 23,138
6
votes
1 answer

Для чего в RUST нужен знак вопроса?

fn main() { use std::fs::File; use std::io::prelude::*; fn foo() -> std::io::Result<()> { let mut file = File::create("foo.txt")?; //здесь file.write_all(b"Hello, world!")?; //здесь Ok(()) } } Для чего нужен знак вопроса ?
new
  • 157
6
votes
4 answers

Как покрасивее написать обработку ошибок в Rust?

Есть примерно вот такой кусок кода парсера сайта с использованием select: extern crate select; use select::document::Document; use select::predicate::{Class, Name, And}; fn main() { // Пример; реальность чуть сложнее, но не суть let html =…
andreymal
  • 13,178
6
votes
2 answers

Проход по for i in 0..vector.len() и 'index out of bounds'

Делаю задачу для тренировки, в последнем for выскакивает ошибка о выходе за границы вектора : thread '
' panicked at 'index out of bounds: the len is 22 but the index is 22', ../src/libcollections/vec.rs:1106* Не могу понять, почему так…
dzrkot
  • 405
6
votes
2 answers

Как в Rust вывести в консоль любой тип данных?

Есть какой-то аналог var_dump или что-то подобное? Либо любой другой аналог для дебагинга и просмотра, что же я получаю в той или иной функции и т.д.
5
votes
1 answer

Язык Rust: почему внешняя с++-функция выполняется в другом потоке?

Впечатление, что если в Rust подключить внешнюю функцию С++, то она выполняется в другом потоке, отличном от того, в котором находится вызывающий код. Почему так происходит? Разве так задумано? Это описано где-нибудь? Вот тестовая программа на…
5
votes
1 answer

Почему в Rust нельзя выделять память до main как это можно в C++?

Есть такой код на C++: #include struct Foo { int * ptr; public: Foo() { ptr = new int; std::cout << "Foo constructor" << std::endl; } ~Foo() { delete ptr; std::cout << "Foo destructor" <<…
4
votes
1 answer

Не собирается второе издание книги “Язык программирования Rust”

В сеть выложили второе издание популярной книги “Язык программирования Rust” (https://github.com/ruRust/rust_book_2ed). Там же и инструкция, как собрать книжку из заготовок, с помощью mdbook build. Однако - не получается! При выполнении этой…
Sergey
  • 13,474
4
votes
1 answer

Как из String сделать &str (возникает ошибка времени жизни ссылки)

Написал функцию: fn read_str<'a>() -> &'a str { let mut input = String::new(); io::stdin().read_line(&mut input).ok(); let output : &str = &input[..]; &output } При компиляции возникает ошибка src/main.rs:13:26: 13:31 error: `input`…
4
votes
2 answers

Обработка ошибок в Rust

Есть программа на rust, взятая отсюда: Учебник по Rust Захотелось мне, чтобы программа постоянно выводила собственный префикс ("guess_game>> "). По-этому немного пришлось подкорректировать строки перед запросом ввода. В оригинале было…
Nex
  • 345
4
votes
1 answer

Реализация внешнего trait для внешнего шаблона, параметризованного локальным типом в Rust

После перехода с январьской версии компилятора Rust на beta. Обнаружил что код подобный этому не компилируется http://is.gd/oX7GWN: use std::fmt::{Display, Formatter, Error}; struct MyLocalType; type MyResult = Result; impl…
3
votes
1 answer

cannot borrow `...` as mutable more than once at a time

Есть такой код: fn count_sort<'a, D, T: 'a>(data: &'a mut D, min: T, max: T) where &'a mut D: IntoIterator, T: Sort + Clone + AddAssign, usize: From { let mut count = vec![0usize;…
aitvann
  • 468
3
votes
1 answer

Проблемы с кириллицей в Rust

При попытке вывести пресловутый "Привет мир" через println! компилятор выдаёт ошибку "stream did not contain valid UTF-8" и отказывается это добро компилировать. Проект пустой, созданный с помощью cargo new, если заменить кириллицу на латиницу -…
2
votes
1 answer

Как в rustc 1.28.0 используется сравнение строковых данных в match?

Продолжил изучение Rust по новой версии книги, прохожу создание игры в "угадай число" Есть такая часть кода: let guess: u32 = match guess.trim().parse() { Ok(num) => num, Err(_) => { println!("Enter a number, please."); …
Hellseher
  • 3,622
  • 12
  • 33
2
votes
1 answer

Преобразование многомерных структур в одномерные

Можно ли используя .iter() .into_iter() .map() ну и .rev() получить Vec равный [6,5,4,3,2,1] из каждой переменной x1, x2, x3, x4, x5? Или без for никак? Если же можно, покажите, пожалуйста, как. fn main() { let x1 =…
Majestio
  • 5,050
1
2 3
8 9