Size: a a a

2020 December 30

DS

Doge Shibu in rust_offtopic
Суть моей идее чтобы не доставать в каждом контроллере значения из extensions вручную
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
пробелма в том что полунин говорил что реквест клонируется целиком
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
хотя там где-то арки под капотом наверняка
источник

DS

Doge Shibu in rust_offtopic
Αλεχ Zhukovsky
пробелма в том что полунин говорил что реквест клонируется целиком
В смысле? FromRequest по ссылке получает HttpRequest
источник

DS

Doge Shibu in rust_offtopic
Откуда там копия?
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
а, ок
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
фромреквест с позиционными аргументами тоже хреновато работает
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
прикольно, можно так сделать:

pub async fn put_current_company_custom_settings<B: FromRequest + Deref<Target = CustomSettingsUpdate>>(
   req: HttpRequest,
   company_settings_service: web::Data<CompanySettingsService>,
   uri_params: web::Path<(Uuid,)>,
   body: B,
)

И
уже в регистрации ручки решать, что из тела или ещё откуда-то значение должно маппится
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
ладно, это наверное уже ни к чему
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
Doge Shibu
В смысле? FromRequest по ссылке получает HttpRequest
бля вот оптяь говно. ЭКстеншн возвращает ссылку, и там опять с лайфтаймами залупа
источник

DS

Doge Shibu in rust_offtopic
Αλεχ Zhukovsky
бля вот оптяь говно. ЭКстеншн возвращает ссылку, и там опять с лайфтаймами залупа
Какая именно?
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
conflicting requirements конечно
источник

DS

Doge Shibu in rust_offtopic
В смысле ты хочешь взять ссылку из extensions и передать её дальше?
источник

DS

Doge Shibu in rust_offtopic
Можешь в экстенсион записывать оптион сервиса и его мувить тут
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
struct ScopedDependency<'a, T>(&'a T);

impl<'a, T> FromRequest for ScopedDependency<'a, T>
{
   type Error = ();
   type Future = Ready<Result<Self, Self::Error>>;
   type Config = ();

   #[inline]
   fn from_request(req: &'a HttpRequest, _: &mut Payload) -> Self::Future {
       std::future::ready(
           req.extensions().get::<T>().map(ScopedDependency).ok_or(())
       )
   }
}
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
я понимаю что тут херь написана но пока не сильно понимаю че с этим можно сделать
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
по-хорошему нужно

fn from_request(req: &'a HttpRequest, _: &mut Payload)

Но так не работает
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
или
fn from_request<'b>(req: &'b HttpRequest, _: &mut Payload) -> Ready<Result<ScopedDependency<'b, T>, Self::Error>> {

Но
так тоже
источник

DS

Doge Shibu in rust_offtopic
Αλεχ Zhukovsky
по-хорошему нужно

fn from_request(req: &'a HttpRequest, _: &mut Payload)

Но так не работает
Посмотри нет ли аналога FromRequest, но параметризрванного лайфтаймом
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
нет, там везде говно типа

where
   T: DeserializeOwned + 'static,
источник