// the find
gakonst/ethers-rs
Complete Ethereum & Celo library and wallet implementation in Rust. https://docs.rs/ethers
ethers-rs is a full-featured Ethereum client library for Rust — JSON-RPC provider, contract ABI bindings via codegen, signers, middleware stack, ENS, Etherscan client, the works. It was the go-to Rust Ethereum library for a few years. It is now officially deprecated in favor of alloy-rs, which the same core team now maintains.
The abigen/derive macros are genuinely good: you point them at an ABI JSON and get type-safe Rust structs, call builders, and event decoders at compile time — no stringly-typed nonsense. The middleware composition pattern (signer wraps nonce-manager wraps gas-oracle wraps provider) is elegant and easy to extend. The examples directory is unusually thorough — runnable crates for almost every feature. Test infrastructure is solid: real Anvil/Geth integration tests, not mocked JSON fixtures.
It's deprecated. The README says so in the first paragraph. New projects should use alloy-rs; adopting ethers-rs today means inheriting a frozen dependency graph and no upstream bug fixes. The middleware chain is clever until you hit the type-level complexity — stacking three or four middlewares produces compiler errors that take real time to decode. The async story predates tokio stabilization in places, and some transports (IPC on Windows, legacy WS) have known rough edges that won't be fixed. Celo and Optimism feature flags are mutually exclusive, which is a real constraint if you're building multi-chain tooling.