Самый простой способ сделать HTTP в Rust - reqwest . Hyper - популярная HTTP-библиотека для Rust и использует две библиотеки: Tokio , чтобы сделать неблокирующие запросы и фьючерсы-rs для фьючерсов / обещаний. Пример Hyper приведен ниже и во многом вдохновлен примером в его документации . В Для потомков я оставил свой первоначальный ответ ниже, но см. выше для обновления для Rust 1.19 (последняя стабильная версия на момент написания этой статьи). Я верю, что вы поиск находится в стандартной библиотеке . теперь в rust-http и ответ Криса Моргана является стандартным способом в текущем Rust в обозримом будущем. Я не уверен, как далеко я могу вас принять (и надеюсь, что я не поймаю вас в неправильном направлении!), Но вам нужно что-то вроде: // Rust 1.19, Hyper 0.11, tokio-core 0.1, futures 0.1
extern crate futures;
extern crate hyper;
extern crate tokio_core;
use futures::{Future};
use hyper::{Client, Uri};
use tokio_core::reactor::Core;
fn main() {
// Core is the Tokio event loop used for making a non-blocking request
let mut core = Core::new().unwrap();
let client = Client::new(&core.handle());
let url : Uri = "http://httpbin.org/response-headers?foo=bar".parse().unwrap();
assert_eq!(url.query(), Some("foo=bar"));
let request = client.get(url)
.map(|res| {
assert_eq!(res.status(), hyper::Ok);
});
// request is a Future, futures are lazy, so must explicitly run
core.run(request).unwrap();
}
Cargo.toml
: [dependencies]
hyper = "0.11"
tokio-core = "0.1"
futures = "0.1"
Что касается кодирования, есть несколько примеров в модульных тестах в SRC / libstd / net_url.rs. // Rust 0.6 -- old code
/*
extern mod std;
use std::net_ip;
use std::uv;
fn main() {
let iotask = uv::global_loop::get();
let result = net_ip::get_addr("www.duckduckgo.com", &iotask);
io::println(fmt!("%?", result));
}
*/