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

37
Что такое «фундаментальный тип» в Rust?

Где-то я подобрал термин «фундаментальный тип» (и его атрибут #[fundamental]) и только сейчас я хотел узнать о нем больше. Я смутно помню, что в некоторых ситуациях мне нужно было ослабить правила согласованности. И я думаю, что ссылочные типы являются такими фундаментальными типами. К сожалению,...

20
Как глобальные консты, которые не являются копиями или клонами, работают в 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ни другое Copy, я бы...

16
Что означает «не может быть заимствован как неизменный, потому что он также заимствован как изменяемый» в индексе вложенного массива?

Что означает ошибка в этом случае: 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; | --^---- | | | | | immutable borrow occurs here |...

13
Почему `std :: mem :: drop` не совпадает с замыканием | _ | () в границах черт с более высоким рейтингом?

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

11
Могу ли я включить отладочную информацию только для своего кода без пакетов?

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

11
Как вернуть связанный тип из признака, связанного с признаком более высокого ранга?

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

10
Должен ли дизель запускаться с использованием актера синхронизации, actix_web :: web :: block или futures-cpupool?

Фон Я работаю над веб-приложением actix, использующим дизель через r2d2, и не знаю, как лучше всего выполнять асинхронные запросы. Я нашел три варианта, которые кажутся разумными, но я не уверен, какой из них лучше. Потенциальные решения Синхронный актер В качестве примера я мог бы использовать...

10
Почему добавление второго impl предотвращает принудительное приведение аргумента?

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

10
Как использовать Rust async fn, который принимает ссылку в качестве обратного вызова?

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

10
Как вызвать функцию, если переменная и функция имеют одно и то же имя?

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

9
Как включить функцию «ящик» в Rust?

Я пытаюсь использовать rand::SmallRng. В документации сказано Этот PRNG является функциональным : для использования необходимо включить функцию ящика small_rng. Я искал и не могу понять, как включить «функции ящика». Фраза даже не используется в документах Rust. Это лучшее, что я мог придумать:...

9
Приведение ссылки на функцию с неверным указателем?

Я отслеживаю ошибку в стороннем коде и сузил ее до чего-то вроде. 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) и...