Size: a a a

Rust — русскоговорящее сообществo

2020 March 20

RS

Roma S in Rust — русскоговорящее сообществo
Nikita Nazarenko
либо просто делать не так как сейчас. вопрос правда как, но это уже другая история
через impl T мб?
источник

NN

Nikita Nazarenko in Rust — русскоговорящее сообществo
а можно в документацию ткнуть?

проблема примерно такая - я пытаюсь использовать структуру из крейта которая создаётся своим там new, но эта структура содержит 4 параметра типа, которые я задать конечно могу руками, но выглядеть будет очень монструозно.
источник

NN

Nikita Nazarenko in Rust — русскоговорящее сообществo
а ничего лучше как-то не придумывается
источник

NN

Nikita Nazarenko in Rust — русскоговорящее сообществo
box не предлагать, у меня нет аллокатора
источник

NN

Nikita Nazarenko in Rust — русскоговорящее сообществo
Я подозреваю что что-то делаю не так, но не очень понимаю что именно
источник

P

Pavel in Rust — русскоговорящее сообществo
Nikita Nazarenko
мне надо в структуре указать какой тип переменной будет, а там ёбань и срань получается
я так не один раз бросал разбираться с либами
источник

NN

Nikita Nazarenko in Rust — русскоговорящее сообществo
просто у меня есть стойкое ощущение что эту помойку с типами надо просто выкинуть к херам и переделать
источник

VB

Vlad Beskrovnyy in Rust — русскоговорящее сообществo
Вафель
fn never_returns() -> stack_rc::StackRcRef<i32> {
    let a = stack_rc::StackRc::new(1);
    let res = a.make_ref();
    core::mem::forget(a);
    res
}
Как я мог забыть. Ну, паттерн из crossbeam тогда точно сработает
источник

YT

Yauheni Tsiarokhin in Rust — русскоговорящее сообществo
парни помогите плиз

вот есть такая функция
    fn check(&self, title_code: &str) -> Self::Future {
       let (reply_tx, reply_rx) = oneshot::channel();
       let request = Request::Check {
           reply_tx,
       };

       let result_future = self
           .tx_chan
           .clone()
           .send(request)
           .and_then(move |_| {
               let title_code = title_code.to_owned();

               reply_rx
                   .map(|resp| resp.into_iter()
                        .flatten()
                        .filter(|elem| elem.title() == title_code)
                        .flatten()
                        .collect())
           });

       Box::new(result_future)
   }
источник

YT

Yauheni Tsiarokhin in Rust — русскоговорящее сообществo
там есть переменная title_code которая приходит в аргументе
как ее в кложуре испольховать?
ругается на лайфтаймы
источник

АГ

Алексей Герасимов in Rust — русскоговорящее сообществo
Yauheni Tsiarokhin
парни помогите плиз

вот есть такая функция
    fn check(&self, title_code: &str) -> Self::Future {
       let (reply_tx, reply_rx) = oneshot::channel();
       let request = Request::Check {
           reply_tx,
       };

       let result_future = self
           .tx_chan
           .clone()
           .send(request)
           .and_then(move |_| {
               let title_code = title_code.to_owned();

               reply_rx
                   .map(|resp| resp.into_iter()
                        .flatten()
                        .filter(|elem| elem.title() == title_code)
                        .flatten()
                        .collect())
           });

       Box::new(result_future)
   }
конвертнуть в String?
источник

YT

Yauheni Tsiarokhin in Rust — русскоговорящее сообществo
Алексей Герасимов
конвертнуть в String?
чтото я попробовал не помогает
источник

YT

Yauheni Tsiarokhin in Rust — русскоговорящее сообществo
тип аргумента на стринг поменять?
источник

АГ

Алексей Герасимов in Rust — русскоговорящее сообществo
ну можно и так. а можно перед созданием замыкания создать String и уже его мувить в футуру
источник

YT

Yauheni Tsiarokhin in Rust — русскоговорящее сообществo
Алексей Герасимов
ну можно и так. а можно перед созданием замыкания создать String и уже его мувить в футуру
так?

    fn check(&self, title_code: &str) -> Self::Future {
       let (reply_tx, reply_rx) = oneshot::channel();
       let request = Request::Check {
           reply_tx,
       };
       let title_code = String::from(title_code);

       let result_future = self
           .tx_chan
           .clone()
           .send(request)
           .and_then(move |_| {

               reply_rx
                   .map(|resp| resp.into_iter()
                        .flatten()
                        .filter(|elem| elem.title() == title_code)
                        .flatten()
                        .collect())
           });

       Box::new(result_future)
   }
источник

YT

Yauheni Tsiarokhin in Rust — русскоговорящее сообществo
как затолкать его во фьючур и почему стринг вместо слайса должен порешать проблему?
источник

АГ

Алексей Герасимов in Rust — русскоговорящее сообществo
потому что слайс имеет лайфтайм, ты в футуру указатель утащишь, и пока она там исполняется он должен быть жив. а String владеет значением, то есть всегда жива пока не дропнули
источник

АГ

Алексей Герасимов in Rust — русскоговорящее сообществo
иными словами ты не контролируешь время жизни данных за слайсом, его конторлирует тот кто владеет этими данными. ну либо тебе нужно заиметь &’static str, он всегда жив
источник

YT

Yauheni Tsiarokhin in Rust — русскоговорящее сообществo
Алексей Герасимов
потому что слайс имеет лайфтайм, ты в футуру указатель утащишь, и пока она там исполняется он должен быть жив. а String владеет значением, то есть всегда жива пока не дропнули
благодарю за обьяснение
допустим я слайс в строку конвертнул
как мне его во фьючур мувнуть?
источник

АГ

Алексей Герасимов in Rust — русскоговорящее сообществo
так она у тебя вот здесь должна мувнуться .and_then(move |_| {
источник