pub struct Parser { /* private fields */ }Implementations§
Source§impl Parser
impl Parser
Sourcepub fn new(blocks_dir: PathBuf, rpc: &'static Client) -> Self
pub fn new(blocks_dir: PathBuf, rpc: &'static Client) -> Self
Examples found in repository?
examples/main.rs (line 21)
5fn main() {
6 let i = std::time::Instant::now();
7
8 let bitcoin_dir = default_bitcoin_path();
9
10 let rpc = Box::leak(Box::new(
11 Client::new(
12 "http://localhost:8332",
13 Auth::CookieFile(bitcoin_dir.join(".cookie")),
14 )
15 .unwrap(),
16 ));
17
18 let start = None;
19 let end = None;
20
21 let parser = Parser::new(bitcoin_dir.join("blocks"), rpc);
22
23 parser
24 .parse(start, end)
25 .iter()
26 .for_each(|(height, _block, hash)| {
27 println!("{height}: {hash}");
28 });
29
30 println!(
31 "{}",
32 parser
33 .get(Height::new(0))
34 .txdata
35 .first()
36 .unwrap()
37 .output
38 .first()
39 .unwrap()
40 .script_pubkey
41 );
42
43 println!(
44 "{}",
45 parser
46 .get(Height::new(840_000))
47 .txdata
48 .first()
49 .unwrap()
50 .output
51 .first()
52 .unwrap()
53 .value
54 );
55
56 dbg!(i.elapsed());
57}Sourcepub fn get(&self, height: Height) -> Block
pub fn get(&self, height: Height) -> Block
Examples found in repository?
examples/main.rs (line 33)
5fn main() {
6 let i = std::time::Instant::now();
7
8 let bitcoin_dir = default_bitcoin_path();
9
10 let rpc = Box::leak(Box::new(
11 Client::new(
12 "http://localhost:8332",
13 Auth::CookieFile(bitcoin_dir.join(".cookie")),
14 )
15 .unwrap(),
16 ));
17
18 let start = None;
19 let end = None;
20
21 let parser = Parser::new(bitcoin_dir.join("blocks"), rpc);
22
23 parser
24 .parse(start, end)
25 .iter()
26 .for_each(|(height, _block, hash)| {
27 println!("{height}: {hash}");
28 });
29
30 println!(
31 "{}",
32 parser
33 .get(Height::new(0))
34 .txdata
35 .first()
36 .unwrap()
37 .output
38 .first()
39 .unwrap()
40 .script_pubkey
41 );
42
43 println!(
44 "{}",
45 parser
46 .get(Height::new(840_000))
47 .txdata
48 .first()
49 .unwrap()
50 .output
51 .first()
52 .unwrap()
53 .value
54 );
55
56 dbg!(i.elapsed());
57}Sourcepub fn parse(
&self,
start: Option<Height>,
end: Option<Height>,
) -> Receiver<(Height, Block, BlockHash)>
pub fn parse( &self, start: Option<Height>, end: Option<Height>, ) -> Receiver<(Height, Block, BlockHash)>
Returns a crossbeam channel receiver that receives (Height, Block, BlockHash) tuples from an inclusive range (start and end)
For an example checkout ./main.rs
Examples found in repository?
examples/main.rs (line 24)
5fn main() {
6 let i = std::time::Instant::now();
7
8 let bitcoin_dir = default_bitcoin_path();
9
10 let rpc = Box::leak(Box::new(
11 Client::new(
12 "http://localhost:8332",
13 Auth::CookieFile(bitcoin_dir.join(".cookie")),
14 )
15 .unwrap(),
16 ));
17
18 let start = None;
19 let end = None;
20
21 let parser = Parser::new(bitcoin_dir.join("blocks"), rpc);
22
23 parser
24 .parse(start, end)
25 .iter()
26 .for_each(|(height, _block, hash)| {
27 println!("{height}: {hash}");
28 });
29
30 println!(
31 "{}",
32 parser
33 .get(Height::new(0))
34 .txdata
35 .first()
36 .unwrap()
37 .output
38 .first()
39 .unwrap()
40 .script_pubkey
41 );
42
43 println!(
44 "{}",
45 parser
46 .get(Height::new(840_000))
47 .txdata
48 .first()
49 .unwrap()
50 .output
51 .first()
52 .unwrap()
53 .value
54 );
55
56 dbg!(i.elapsed());
57}Auto Trait Implementations§
impl Freeze for Parser
impl !RefUnwindSafe for Parser
impl Send for Parser
impl Sync for Parser
impl Unpin for Parser
impl !UnwindSafe for Parser
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more