# evm-selectors `evm-signatures` is a Rust library for working with known Ethereum Virtual Machine (EVM) function, error, event, and other selectors, with support for downloading the selector database from the [OpenChain API](https://docs.openchain.xyz/). ## Usage Downloading the database ```rust use evm_selectors::EvmSelectors; use std::path::Path; // Download and return as string let data = EvmSelectors::download(None).await?; // Download and write to tempfile.txt EvmSelectors::download_to_file(Path::new("tempfile.txt"), None).await?; ``` Loading the database ```rust use evm_selectors::EvmSelectors; use std::path::Path; // From a string let data = "...".to_string(); let db = EvmSelectors::new_from_raw(&data)?; // From a file let db = EvmSelectors::new_from_file(Path::new("tempfile.txt"))?; ``` Querying selectors ```rust use evm_selectors::EvmSelectors; use std::path::Path; // Query a single selector let db = EvmSelectors::new_from_file(Path::new("tempfile.txt"))?; let functions = db.get(&[0x00, 0x01, 0x02, 0x03].into()); // Get all available selectors let all = db.items(); ``` ## Requirements If the `download` feature is active (it is by default), a SSL/TLS library must be present. See the [reqwest documentation](https://github.com/seanmonstar/reqwest?tab=readme-ov-file#requirements) for further details. ## Acknowledgements [OpenChain](https://openchain.xyz) for providing a reliable selector database.