Size: a a a

2020 November 17

VP

Vasili Pascal in Rust Beginners
От restful api скажем
источник

ИЛ

Иван Лещенко... in Rust Beginners
Vasili Pascal
От restful api скажем
источник

ИЛ

Иван Лещенко... in Rust Beginners
Если ты про встроенный HTTP клиент
источник

VP

Vasili Pascal in Rust Beginners
Да встроенный
источник

ИЛ

Иван Лещенко... in Rust Beginners
Если упираешься в лимит в 256 килобайт, то можно ещё получить байты через
https://docs.rs/actix-web/3.2.0/actix_web/client/struct.ClientResponse.html#method.body
https://docs.rs/awc/2.0.1/awc/struct.MessageBody.html#impl-Future
и скормить их serde_json
источник

VP

Vasili Pascal in Rust Beginners
@ivan770  да, эти методы я уже видел, тока вот реализации у всех разные и довольно громоздкие получаются
источник

VP

Vasili Pascal in Rust Beginners
поэтому интересно найти элегантное решение
источник

ИЛ

Иван Лещенко... in Rust Beginners
Vasili Pascal
@ivan770  да, эти методы я уже видел, тока вот реализации у всех разные и довольно громоздкие получаются
Вплане реализации?
источник

ИЛ

Иван Лещенко... in Rust Beginners
Иван Лещенко
Вплане реализации?
Под капотом JsonBody тоже зовёт serde_json https://docs.rs/awc/2.0.1/src/awc/response.rs.html#316
источник

VP

Vasili Pascal in Rust Beginners
ну вот например я делаю так со своей структурой
let response = client.get(url)
   .header("User-Agent", "
some-server")
   .header("Accept", "application/json")
   .bearer_auth(&token.token)
   .send()
   .await
   .unwrap()
   .body()
   .await;

let deployments: Vec<Deployment> = serde_json::from_slice(&response.unwrap().as_ref()).unwrap();


хотелось бы посмотреть кто как десериализует
источник

ИЛ

Иван Лещенко... in Rust Beginners
Vasili Pascal
ну вот например я делаю так со своей структурой
let response = client.get(url)
   .header("User-Agent", "
some-server")
   .header("Accept", "application/json")
   .bearer_auth(&token.token)
   .send()
   .await
   .unwrap()
   .body()
   .await;

let deployments: Vec<Deployment> = serde_json::from_slice(&response.unwrap().as_ref()).unwrap();


хотелось бы посмотреть кто как десериализует
Можешь ещё так
let response: Vec<Deployment> = client.get(url)
   .header("User-Agent", "some-server")
   .header("Accept", "application/json")
   .bearer_auth(&token.token)
   .send()
   .await
   .unwrap()
   .json()
   .await
   .unwrap();
источник

VP

Vasili Pascal in Rust Beginners
👍
источник

MK

Maxim Koylo in Rust Beginners
Иван Лещенко
Можешь ещё так
let response: Vec<Deployment> = client.get(url)
   .header("User-Agent", "some-server")
   .header("Accept", "application/json")
   .bearer_auth(&token.token)
   .send()
   .await
   .unwrap()
   .json()
   .await
   .unwrap();
красиво
источник
2020 November 18

В

Виталий in Rust Beginners
Всем привет. Вот уже более шести месяцев пишу на расте. И за все время не пользовался Box<>, ‘a , dyn, RC.  И если честно не пойму где их надо применять. ‘a - это обозначение времени жизни, понятно, но и без этого все работает, вместо RC - использую ARC. В принципе они не нужны или я упускаю какие-то полезные практики?
источник

V

Vitaliy in Rust Beginners
Ну Arc использовать следует если счётчик шаренный между потоками. Если конкретный счётчик предполагается использовать только внутри одного потока, то Rc будет дешевле в использовании. Собственно, это единственная разница между ними.
источник

V

Vitaliy in Rust Beginners
А другие элементы более обширны, наверное просто не дошёл до этого, раз оказались ещё не нужны. Хотя про полное отсутствие Box'ов и лайфтаймов странно (хотя вполне может такое быть). Такое точно может случиться если все значения всегда копировать\клонировать.
источник

A

Adatan in Rust Beginners
Если кто-то работал с mongodb в Rust, какой тип данных нужно использовать для создания timestamp?
источник

Oℕ

Oleg ℕizhnik in Rust Beginners
А что можно использовать в стейбле, пока не стабилизируют https://doc.rust-lang.org/1.9.0/std/num/trait.Zero.html?

Я запихнул From<u8> и 0.into() .
Это ок?
источник

Oℕ

Oleg ℕizhnik in Rust Beginners
В частности мне нужно сравнение с 0 для
fn gcd<A: Rem<Output=A> + From<u8> + Ord + Clone>(a: A, b: A) -> A {
   if b > a { return gcd(b, a); };
   let r = a % b.clone();
   if r == 0.into() { b } else { gcd(b, r) }
}
рассматриваю ещё
+ Neg и r == r.neg()

но выглядит подозрительно
источник

IB

Ilya Bogdanov in Rust Beginners
есть крейты num и num_traits, но Neg там кажется нет
источник