Rust bindings to libcurl for making HTTP requests and network transfers.
curl-rust is a Rust library that provides bindings to the libcurl C library, allowing Rust applications to make HTTP requests and perform network transfers. It wraps libcurl's functionality in a safe, idiomatic Rust API while maintaining compatibility with curl's extensive feature set including multiple protocols, SSL/TLS backends, and authentication methods.
Rust developers who need to make HTTP requests or network transfers in their applications, particularly those who require the reliability, performance, and protocol support of the battle-tested curl library.
Developers choose curl-rust because it provides the full power of libcurl with Rust's safety guarantees, offers multiple TLS backend options including Rustls, and maintains excellent performance while being actively maintained and widely used in the Rust ecosystem.
Rust bindings to libcurl
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Exposes both easy and multi interfaces, enabling everything from simple GET requests to concurrent transfers, as demonstrated in the README examples.
Supports OpenSSL, Rustls, Schannel, and Secure Transport via feature flags, allowing flexibility across different platforms and security requirements.
Leverages curl's decades of optimization and reliability, with features like connection reuse for efficient repeated requests.
Inherits libcurl's wide protocol range, including HTTP/1.1, HTTP/2 via nghttp2, and more, suitable for diverse network tasks.
The README warns that Rustls backend is experimental and may have significant bugs, with no stability guarantees, making it risky for production use.
Requires system libcurl and SSL libraries, leading to potential issues like the NSS SSL error mentioned, and configuring static linking involves multiple feature flags.
While it offers concurrent transfers via the multi interface, it doesn't integrate seamlessly with Rust's async/await ecosystem, which might be less ergonomic for modern applications.