50 lines
1.2 KiB
Markdown
50 lines
1.2 KiB
Markdown
# Ethereum primitives
|
|
|
|
[![Build Status](https://travis-ci.org/paritytech/primitives.svg?branch=master)](https://travis-ci.org/paritytech/primitives)
|
|
|
|
Fixed-sized integer arithmetic (ethereum-types) and bloom filter (ethbloom)
|
|
|
|
To add this crate to your project, add the following in `Cargo.toml`
|
|
|
|
```toml
|
|
[dependencies]
|
|
ethereum-types = "0.4"
|
|
ethbloom = "0.5"
|
|
```
|
|
|
|
A basic example how to use this crate:
|
|
|
|
```rust
|
|
extern crate ethereum_types;
|
|
extern crate ethbloom;
|
|
|
|
use ethereum_types::U256;
|
|
use ethbloom::{Bloom, Input};
|
|
|
|
fn main() {
|
|
let mut val: U256 = 1023.into();
|
|
for _ in 0..200 { val = val * 2u32 }
|
|
assert_eq!(
|
|
&format!("{}", val),
|
|
"1643897619276947051879427220465009342380213662639797070513307648"
|
|
);
|
|
|
|
let address = [0_u8; 32];
|
|
let mut my_bloom = Bloom::default();
|
|
assert!(!my_bloom.contains_input(Input::Raw(&address)));
|
|
my_bloom.accrue(Input::Raw(&address));
|
|
}
|
|
|
|
```
|
|
|
|
### `no_std` crates
|
|
|
|
This crate has a feature, `std`, that is enabled by default. To use this crate
|
|
in a `no_std` context, add the following to your `Cargo.toml`:
|
|
|
|
```toml
|
|
[dependencies]
|
|
ethereum-types = { version = "0.4", default-features = false }
|
|
ethbloom = { version = "0.5", default-features = false }
|
|
```
|