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

Rust - это язык системного программирования без сборщика мусора, ориентированный на три цели: безопасность, скорость и параллелизм. Используйте этот тег для вопросов о коде, написанном на Rust. Используйте специальный тег для вопросов, относящихся к коду, для которого требуется конкретное издание, например [rust-2018]. Используйте более конкретные теги для таких подтем, как [rust-cargo] и [rust-macros].

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

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

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

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

1
Есть ли более быстрый / более короткий способ инициализировать переменные в структуре Rust?
В следующем примере я бы предпочел присвоить значение каждому полю в структуре в объявлении полей. В качестве альтернативы, для присвоения значений полям фактически требуется один дополнительный оператор для каждого поля. Все, что я хочу сделать, это назначать значения по умолчанию при создании экземпляра структуры. Есть ли более лаконичный способ сделать …
103 rust 

1
Как эффективно искать и вставлять в HashMap?
Я бы хотел сделать следующее: Найдите Vecопределенный ключ и сохраните его для дальнейшего использования. Если он не существует, создайте пустое Vecполе для ключа, но все же сохраните его в переменной. Как это сделать эффективно? Естественно, я подумал, что могу использовать match: use std::collections::HashMap; // This code doesn't compile. let mut …
103 hashmap  rust  lookup 

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


3
Можно ли написать быструю функцию 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; } в ржавчине? Если он существует, отправьте код. Я попробовал это …


1
Идиоматические обратные вызовы в Rust
В C / C ++ я обычно выполняю обратные вызовы с помощью простого указателя на функцию, возможно, также передав void* userdataпараметр. Что-то вроде этого: typedef void (*Callback)(); class Processor { public: void setCallback(Callback c) { mCallback = c; } void processEvents() { for (...) { ... mCallback(); } } private: …
100 callback  rust 

5
Как перебрать диапазон с помощью настраиваемого шага?
Как я могу перебрать диапазон в Rust с шагом, отличным от 1? Я работаю с C ++, поэтому я хотел бы сделать что-нибудь вроде for(auto i = 0; i <= n; i+=2) { //... } В Rust мне нужно использовать эту rangeфункцию, и не похоже, что есть третий аргумент для …
100 rust 


2
Можно ли сделать шрифт только подвижным, а не копируемым?
Примечание редактора : этот вопрос задавался до Rust 1.0, и некоторые утверждения в вопросе не обязательно верны в Rust 1.0. Некоторые ответы были обновлены с учетом обеих версий. У меня есть эта структура struct Triplet { one: i32, two: i32, three: i32, } Если я передаю это функции, она неявно …
96 rust 

3
Что есть в Rust вместо сборщика мусора?
Я понимаю, что в Rust нет сборщика мусора, и мне интересно, как освобождается память, когда привязка выходит за рамки. Итак, в этом примере я понимаю, что Rust освобождает память, выделенную для 'a', когда она выходит за пределы области видимости. { let a = 4 } Проблема, с которой я столкнулся, …
95 rust 

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.