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

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

1
Как глобальные консты, которые не являются копиями или клонами, работают в Rust?
Скажем, у меня есть следующий фрагмент ( детская площадка ) struct A { pub val: u32 } const GLOBAL_A: A = A {val: 2}; fn main() { let some_a: A = GLOBAL_A; let other_a: A = GLOBAL_A; println!("double val = {}", some_a.val + other_a.val); } Поскольку Aэто ни то, Cloneни …
20 rust  const  move 

1
Что означает «не может быть заимствован как неизменный, потому что он также заимствован как изменяемый» в индексе вложенного массива?
Что означает ошибка в этом случае: fn main() { let mut v: Vec<usize> = vec![1, 2, 3, 4, 5]; v[v[1]] = 999; } error[E0502]: cannot borrow `v` as immutable because it is also borrowed as mutable --> src/main.rs:3:7 | 3 | v[v[1]] = 999; | --^---- | | | | …

2
Почему `std :: mem :: drop` не совпадает с замыканием | _ | () в границах черт с более высоким рейтингом?
Реализация std::mem::dropзадокументирована следующим образом: pub fn drop<T>(_x: T) { } Таким образом, я ожидаю, что укупорка |_| ()(в просторечии известная как унитаз ) будет потенциальной заменой 1: 1 dropв обоих направлениях. Тем не менее, приведенный ниже код показывает, что dropон не совместим с признаком более высокого ранга, связанным с параметром …

4
Как вернуть связанный тип из признака, связанного с признаком более высокого ранга?
У меня есть черта, которая имеет функцию для десериализации ассоциированного типа. Однако этот связанный тип должен иметь время жизни, которое решает вызывающая сторона, поэтому у меня есть отдельная черта, для которой я использую черту с более высоким рейтингом, чтобы ее можно было десериализовать для любого времени жизни. Мне нужно использовать …

1
Как я могу поместить асинхронную функцию на карту в Rust?
Я не могу обработать асинхронные функции при записи асинхронного маршрутизатора для hyper. Этот код: use std::collections::HashMap; use std::future::Future; type BoxedResult<T> = Result<T, Box<dyn std::error::Error + Send + Sync>>; type CalcFn = Box<dyn Fn(i32, i32) -> dyn Future<Output = BoxedResult<i32>>>; async fn add(a: i32, b: i32) -> BoxedResult<i32> { Ok(a + …
11 rust  async-await 

1
Могу ли я включить отладочную информацию только для своего кода без пакетов?
С включенной отладочной информацией мой двоичный файл становится примерно 400 МБ. Это происходит потому, что Rust содержит отладочную информацию для всех зависимостей. Есть ли способ включить отладочную информацию только для моего кода? [package] name = "app" version = "0.7.1" edition = "2018" [dependencies] actix = "*" actix-web = {version = …
11 rust  rust-cargo 

1
Как вызвать функцию, если переменная и функция имеют одно и то же имя?
Переменная и функция имеют одно и то же имя. Как мне вызвать функцию? fn main() { let a = 1; fn a() -> i32 { 2 } println!("{}", a()); } Компилятор Rust сказал мне: error[E0618]: expected function, found `{integer}` Другими словами, компилятор Rust не вызывает aфункцию, а вместо этого обращается …
10 rust 

1
В чем разница между `| _ | асинхронное перемещение {} `и` асинхронное перемещение | _ | {} `
Давайте рассмотрим следующие примеры: main.rs use futures::executor::block_on; use futures::future::{FutureExt, TryFutureExt}; async fn fut1() -> Result<String, u32> { Ok("ok".to_string()) } fn main() { println!("Hello, world!"); match block_on(fut1().and_then(|x| async move { Ok(format!("{} is \"ok\"", x)) })) { Ok(s) => println!("{}", s), Err(u) => println!("{}", u) }; } Cargo.toml [dependencies] futures = "^0.3" …
10 rust 

1
Как использовать Rust async fn, который принимает ссылку в качестве обратного вызова?
async fnвозвращает реализованный анонимный тип Future, поэтому, если мы хотим использовать его в качестве обратного вызова, нам нужно преобразовать возвращаемое значение в объект-признак. Я пытался написать функцию, чтобы сделать это, но у меня были некоторые проблемы на всю жизнь. async fnвернет время жизни всех параметров, так что подпись обратного вызова …
10 rust  async-await 

1
Почему добавление второго impl предотвращает принудительное приведение аргумента?
Я сталкивался с этой проблемой при попытке добавить impl Add<char> for Stringв стандартную библиотеку. Но мы можем повторить это легко, без махинаций оператора. Начнем с этого: trait MyAdd<Rhs> { fn add(self, rhs: Rhs) -> Self; } impl MyAdd<&str> for String { fn add(mut self, rhs: &str) -> Self { self.push_str(rhs); …

1
Должен ли дизель запускаться с использованием актера синхронизации, actix_web :: web :: block или futures-cpupool?
Фон Я работаю над веб-приложением actix, использующим дизель через r2d2, и не знаю, как лучше всего выполнять асинхронные запросы. Я нашел три варианта, которые кажутся разумными, но я не уверен, какой из них лучше. Потенциальные решения Синхронный актер В качестве примера я мог бы использовать пример actix , но он …

1
Как включить функцию «ящик» в Rust?
Я пытаюсь использовать rand::SmallRng. В документации сказано Этот PRNG является функциональным : для использования необходимо включить функцию ящика small_rng. Я искал и не могу понять, как включить «функции ящика». Фраза даже не используется в документах Rust. Это лучшее, что я мог придумать: [features] default = ["small_rng"] Но я получаю: Функция …

2
Приведение ссылки на функцию с неверным указателем?
Я отслеживаю ошибку в стороннем коде и сузил ее до чего-то вроде. use libc::c_void; pub unsafe fn foo() {} fn main() { let ptr = &foo as *const _ as *const c_void; println!("{:x}", ptr as usize); } При запуске на стабильной версии 1.38.0 выводится указатель на функцию, но бета (1.39.0-бета.6) …
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.