Size: a a a

2020 July 26

KR

Kai Ren in Rust Async
Casual tears
Технически там появляется референс на "неинициализированную память", вроде как.
Это зависит уже от того как вынимать. Если через uninit, то получается вполне себе да
источник

Ct

Casual tears in Rust Async
Kai Ren
Это зависит уже от того как вынимать. Если через uninit, то получается вполне себе да
Да вроде проблемы есть даже если через mem::take вынимать. Если у нас enum с референсом на себя в одном варианте, который не совпадает с Default, то этот референс будет указывать на неинициализированную память после мува.
источник

Ct

Casual tears in Rust Async
Вот эта проблема уже никак нормально не решается.
источник

PL

Paul Loyd in Rust Async
Kai Ren
Да, потому сигнатура была бы менее удобна в poll’ах со всеми этими «вынь да полож» туды-сюды
Ну так в цикле с забиранием владения подход работать не будет, придётся Option<...> иметь вне цикла, что мало чем от Fuse<...> отличается. Даже если решить проблемы с selfref
источник
2020 July 27

RG

Random Guy in Rust Async
Есть аналог семафора для smol? Или семафор из токио нормально сработает?
источник

С

Сергей in Rust Async
Random Guy
Есть аналог семафора для smol? Или семафор из токио нормально сработает?
В async-std вроде есть свой. Но должен любой работать по идее
источник
2020 July 28

YM

Yaroslav M in Rust Async
друзья, как в tokio правильно таймаут образовать для TcpStream::connect,
обернуть в tokio::time::delay_for ??
источник

YM

Yaroslav M in Rust Async
т.е. tokio::time::timeout`
разобрался, спасибо)
источник

RG

Random Guy in Rust Async
Сергей
В async-std вроде есть свой. Но должен любой работать по идее
нету :( Есть только мьютекс и барьер
источник

A

Anton in Rust Async
Товарищи чет я туплю, если в ниже приведенном коде раскомментировать box trait, оно перестоет компилится

use std::{
   sync::Arc,
   convert::Infallible,
};

use tokio::sync::Mutex;
use warp::Filter;

type Ctl = Arc<Mutex<Control>>;

struct Control {
   foo: bool,
   // bar: Option<Box<dyn Bar>>,
}

trait Bar {}


#[tokio::main]
async fn main() {

   let ctl =  Arc::new(Mutex::new(Control {
       foo: true,
       // bar: None,
   }));

   let ctl = warp::any().map(move || ctl.clone());

   let routes = warp::any()
       .and(ctl)
       .and_then(dump_ctl);

   warp::serve(routes).run(([127, 0, 0, 1], 3030)).await;

}

async fn dump_ctl(ctl: Ctl) -> Result<impl warp::Reply, Infallible> {
   Ok(format!("ctl.foo = {}", ctl.lock().await.foo))
}
источник

В

Вафель in Rust Async
Anton
Товарищи чет я туплю, если в ниже приведенном коде раскомментировать box trait, оно перестоет компилится

use std::{
   sync::Arc,
   convert::Infallible,
};

use tokio::sync::Mutex;
use warp::Filter;

type Ctl = Arc<Mutex<Control>>;

struct Control {
   foo: bool,
   // bar: Option<Box<dyn Bar>>,
}

trait Bar {}


#[tokio::main]
async fn main() {

   let ctl =  Arc::new(Mutex::new(Control {
       foo: true,
       // bar: None,
   }));

   let ctl = warp::any().map(move || ctl.clone());

   let routes = warp::any()
       .and(ctl)
       .and_then(dump_ctl);

   warp::serve(routes).run(([127, 0, 0, 1], 3030)).await;

}

async fn dump_ctl(ctl: Ctl) -> Result<impl warp::Reply, Infallible> {
   Ok(format!("ctl.foo = {}", ctl.lock().await.foo))
}
с какой ошибкой?
источник

В

Вафель in Rust Async
Но гадая по коду могу предположить что ты забыл + Send + Sync
источник

A

Anton in Rust Async
не понимаю что от меня хочет https://docs.rs/warp/0.2.4/warp/trait.Filter.html#method.and_then
источник

A

Anton in Rust Async
Вафель
Но гадая по коду могу предположить что ты забыл + Send + Sync
Я пробовал завернуть в Arc<Mutex> тоже самое
источник

A

Anton in Rust Async
Вафель
с какой ошибкой?
О, если бы она была читабельна, я бы вопросов не задавал
источник

Ct

Casual tears in Rust Async
Anton
О, если бы она была читабельна, я бы вопросов не задавал
Попробуй код вытащи из main в отдельную асинхронную функцию. Возможно тебе #[tokio::main] ошибку портит.
источник

A

Anton in Rust Async
Casual tears
Попробуй код вытащи из main в отдельную асинхронную функцию. Возможно тебе #[tokio::main] ошибку портит.
Нет
источник

A

Anton in Rust Async
В структуре просто так нельзя юзать dyn Trait - нужно как то его удавлетворить
источник

В

Вафель in Rust Async
Anton
О, если бы она была читабельна, я бы вопросов не задавал
если слишком большая — кидай на gist
источник

A

Anton in Rust Async
источник