Size: a a a

2020 July 13

В

Вафель in Rust Async
(нужна последняя строка из файла)
источник

Ct

Casual tears in Rust Async
Вафель
А есть какой-то красивый способ получить последний элемент из стрима?

Что-нибудь лучше чем
let mut last = None;
while let next @ Some(_) = lines.next().await { last = next }
Похоже что нету. Вообще с файлами пока проще (и скорее всего, лучше) работать синхронно.
источник

D

Denis in Rust Async
да вроде по-другому не сделать, ты же не знаешь заранее, когда стрим закончится
источник

Ct

Casual tears in Rust Async
Denis
да вроде по-другому не сделать, ты же не знаешь заранее, когда стрим закончится
С итераторами такая же стори, но метод last() на итераторе таки есть.
источник

D

Denis in Rust Async
да
источник

D

Denis in Rust Async
там кстати фолдом сделано
источник

D

Denis in Rust Async
    fn last(self) -> Option<Self::Item>
   where
       Self: Sized,
   {
       #[inline]
       fn some<T>(_: Option<T>, x: T) -> Option<T> {
           Some(x)
       }

       self.fold(None, some)
   }
источник

D

Denis in Rust Async
в стриме можно так же сделать
источник
2020 July 14

AI

Alex Ilizarov in Rust Async
Тоже про fold подумал
источник

M

Mikhail in Rust Async
Вопрос быстрый по actix web , нужно без боли в жопе, считай прямым перебором узнать какие qwery параметры пришли из возможных?
источник

K

Kerrigan in Rust Async
Mikhail
Вопрос быстрый по actix web , нужно без боли в жопе, считай прямым перебором узнать какие qwery параметры пришли из возможных?
подозреваю, что тебе нужен макрос для структуры, в которой аргументы кверистринга
источник

K

Kerrigan in Rust Async
Kerrigan
подозреваю, что тебе нужен макрос для структуры, в которой аргументы кверистринга
процедурный вроде
источник

D

Denis in Rust Async
почистил офтоп, @sergeZua если тебе пох на собеседников, то ю ар нот велком хер
источник
2020 July 15

AK

Aleksandr Kravtsov in Rust Async
Добрый день джентельмены, есть такой вопрос, вот пишу веб на актикс-веб, решил сделать DI контейнер вот таким образом

pub struct DI {
   services: HashMap<TypeId, Arc<dyn Any + Send + Sync>>,
   params: HashMap<String, Arc<dyn Any + Send + Sync>>,
}


в него можно положить и достать сервис указав его тип

вопрсо такой, правильно ли я делаю заворачивая всё в Arc? если не заворачивать то DI не передаётся в

App::new()
   .data(di.clone())
задумался на тем какой перформанс кост у этого дела. сервсы у меня в реквест хендлерах вытаскиваются,

context
   .di
   .service::<AuthService>()
   .login(&username, &password)


метод вытаскивания сервиса вот такой

pub fn service<T: 'static + Send + Sync + Dependency>(&self) -> Arc<T> {
   self.services
       .get(&TypeId::of::<T>())
       .unwrap_or_else(|| panic!(format!("No service `{}` found in DI container", T::service_name())))
       .clone()
       .downcast()
       .unwrap()
}


получается это единственное место где у Арка увеличивается его счётчик и как я понимаю он там как то атомарно увеличивается.. это медленнее чем неатомарно и по этому поводу у меня есть некоторое беспокойство.. а как у вас?
источник

K

Kitsu in Rust Async
инкремент счетчика это вероятно последнее место для оптимизаций
источник

A

Adatan in Rust Async
Бля, как же сложно в расте после Go...
источник

DZ

Dmitriy Zhiλtsov in Rust Async
Adatan
Бля, как же сложно в расте после Go...
Бля, как все хуего в го после раста
источник

A

Adatan in Rust Async
Dmitriy Zhiλtsov
Бля, как все хуего в го после раста
а че может быть не так в го, после раста?
источник

DZ

Dmitriy Zhiλtsov in Rust Async
Adatan
а че может быть не так в го, после раста?
система типов дженерики нуллы
источник

DZ

Dmitriy Zhiλtsov in Rust Async
еще продолжать?
источник