Вопросы с тегом «rust»

142
Как создать глобальный изменяемый синглтон?

Как лучше всего создать и использовать структуру только с одним экземпляром в системе? Да, это необходимо, это подсистема OpenGL, и создание нескольких ее копий и их распространение повсюду добавят путаницы, а не уменьшат ее. Синглтон должен быть максимально эффективным. Кажется невозможным хранить...

136
Каков де-факто способ чтения и записи файлов в Rust 1.x?

Поскольку Rust был сравнительно новым, я видел слишком много способов чтения и записи файлов. Многие из них представляют собой чрезвычайно запутанные фрагменты, которые кто-то придумал для своего блога, и 99% примеров, которые я нашел (даже в Stack Overflow), относятся к нестабильным сборкам,...

131
Как подключить модуль из другого файла из того же проекта?

Следуя этому руководству, я создал проект Cargo. src/main.rs fn main() { hello::print_hello(); } mod hello { pub fn print_hello() { println!("Hello, world!"); } } который я использую cargo build && cargo run и компилируется без ошибок. Теперь я пытаюсь разделить основной модуль на две...

128
Почему не рекомендуется принимать ссылку на String (& String), Vec (& Vec) или Box (& Box) в качестве аргумента функции?

Я написал код на Rust, который принимает &Stringв качестве аргумента: fn awesome_greeting(name: &String) { println!("Wow, you are awesome, {}!", name); } Я также написал код, который принимает ссылку на Vecили Box: fn total_price(prices: &Vec<i32>) -> i32 { prices.iter().sum()...

128
Как 128-битное целое число i128 в Rust работает в 64-битной системе?

Rust имеет 128-битные целые числа, они обозначаются типом данных i128(и u128для целых чисел без знака): let a: i128 = 170141183460469231731687303715884105727; Как Rust заставляет эти i128значения работать в 64-битной системе; например, как он делает с ними арифметические операции? Поскольку,...

127
Невозможно выйти из заимствованного контента / не может выйти из-за общей ссылки

Я не понимаю ошибки cannot move out of borrowed content. Я получал ее много раз и всегда решал ее, но никогда не понимал почему. Например: for line in self.xslg_file.iter() { self.buffer.clear(); for current_char in line.into_bytes().iter() { self.buffer.push(*current_char as char); }...

120
Что эквивалентно оператору соединения над вектором строк?

Мне не удалось найти в Rust эквивалент оператора «соединения» над вектором Strings. У меня есть Vec<String>и я хотел бы присоединиться к ним как сингл String: let string_list = vec!["Foo".to_string(),"Bar".to_string()]; let joined = something::join(string_list,"-"); assert_eq!("Foo-Bar",...

117
Что делает let x = x в Rust?

Я видел этот код в дикой природе : fields.sort_by_key(|&(_, ref field)| field.tags().into_iter().min().unwrap()); let fields = fields; Что делает let fields = fields;линия? Почему это

114
Когда в замыкании реализуются Fn, FnMut и FnOnce?

Каковы специфические условия для закрытия в целях осуществления Fn, FnMutи FnOnceчерты? То есть: Когда закрытие не реализует FnOnceчерту? Когда закрытие не реализует FnMutчерту? Когда закрытие не реализует Fnчерту? Например, изменение состояния замыкания в его теле заставляет компилятор не...

109
Когда уместно использовать связанный тип по сравнению с универсальным типом?

В этом вопросе возникла проблема, которую можно было решить, изменив попытку использования параметра универсального типа на связанный тип. Это вызвало вопрос «Почему здесь более уместен связанный тип?», Который заставил меня захотеть узнать больше. В RFC, который представил связанные типы,...

106
Как использовать локальный неопубликованный ящик?

Я сделал библиотеку: cargo new my_lib и я хочу использовать эту библиотеку в другой программе: cargo new my_program --bin extern crate my_lib; fn main { println!("Hello, World!"); } что мне нужно сделать, чтобы это работало? Они не находятся в одной папке проекта. . ├── my_lib └── my_program...

106
Можно ли в Rust использовать глобальные переменные?

Я знаю, что в целом следует избегать глобальных переменных. Тем не менее, я думаю, что с практической точки зрения иногда желательно (в ситуациях, когда переменная является неотъемлемой частью программы) их использовать. Чтобы изучить Rust, я сейчас пишу программу тестирования базы данных с...

103
Разделить модуль на несколько файлов

Я хочу иметь модуль с несколькими структурами в нем, каждая в своем собственном файле. На Mathпримере модуля: Math/ Vector.rs Matrix.rs Complex.rs Я хочу, чтобы каждая структура находилась в одном модуле, который я бы использовал из своего основного файла, например: use Math::Vector; fn main() {...

103
Есть ли более быстрый / более короткий способ инициализировать переменные в структуре Rust?

В следующем примере я бы предпочел присвоить значение каждому полю в структуре в объявлении полей. В качестве альтернативы, для присвоения значений полям фактически требуется один дополнительный оператор для каждого поля. Все, что я хочу сделать, это назначать значения по умолчанию при создании...

103
Как эффективно искать и вставлять в HashMap?

Я бы хотел сделать следующее: Найдите Vecопределенный ключ и сохраните его для дальнейшего использования. Если он не существует, создайте пустое Vecполе для ключа, но все же сохраните его в переменной. Как это сделать эффективно? Естественно, я подумал, что могу использовать match: use...

101
Можно ли написать быструю функцию InvSqrt () Quake в Rust?

Это просто для удовлетворения моего собственного любопытства. Есть ли реализация этого: float InvSqrt (float x) { float xhalf = 0.5f*x; int i = *(int*)&x; i = 0x5f3759df - (i>>1); x = *(float*)&i; x = x*(1.5f - xhalf*x*x); return x; } в ржавчине? Если он существует, отправьте код. Я...