Comments 8
Программа переносима (cross-platform) => можно поделиться программой, просто скопировав исполняемый файл.
Думаю, автор имел ввиду 1) кросс-компиляцию и 2) бинарник без зависимостей в рамках одной платформы:
The program is cross-platform and can be compiled on many platforms. You can ship it to other people by just copying the binary around.
1. Кросс-платформенность ограничена определенным количеством известных платформ. У того же reqwest, на сколько я помню, нет биндингов на ios или на тот же redox (операционная система, разрабатываемая на расте). Следовательно, работать программа не будет.
2. На линукс reqwest требует OpenSSL, а на виндовс любой бинарник, собраный с msvc-тулчейном (рекомендуемым по умолчанию), требует установленный ms c++ runtime той же версии.
P.S. Это не критика, а уточнение, полезное для тех, у кого раст — первый системный язык программирования. В отличии от java/python/c#/etc системный язык требует куда более тщательной проверки зависимостей
Я так и не понял, почему request и response должны быть mutable
Извиняюсь за занудство, но мне всегда казалось что запрос должен заталкиваться в сокет без всяких изменений состояния. Вы не пробовали просто убрать "mut"? Возможно, библиотека имеет какую-то неочевидную структуру, если запрос в процессе отправки изменяется… В общем, выглядит довольно странно.
В первом случае client.get возвращает структуру RequestBuilder
, в котором send
требует &mut self
, хотя не совсем понятно почему в состав RequestBuilder
вообще входит send
. В моем понимании он должен собирать структуру Request
которая должна потом передаваться инстансу клиента для отправки.
Во втором случае та же ситуация, у структуры Response
метод text
требует &mut self, я так понимаю это как то связано с тем что поле body имеет тип async_impl::ReadableChunks<WaitBody>
.
Поэтому обе переменные компилятор требует объявлять мутабельно
Для версий clap = "2.29" и reqwest = "0.8"
была ошибка
failed to select a version for the requirement
security-framework = "^0.1.13"
Решение - обновить версии зависимостей
[dependencies]
clap = "4.3.4"
reqwest = "0.11.18"
Rust: качаем ленту и парсим JSON