FastWaveBackend/src/main.rs

67 lines
1.3 KiB
Rust
Raw Normal View History

2022-04-14 04:50:37 +00:00
use std::io::prelude::*;
use std::io;
use std::fs::File;
2022-05-18 02:04:32 +00:00
use std::collections::BTreeMap;
use ::next_gen::prelude::*;
2022-04-14 04:50:37 +00:00
use num::*;
use clap::Parser;
#[derive(Parser)]
struct Cli {
/// The path to the file to read
#[clap(parse(from_os_str))]
path: std::path::PathBuf,
}
2022-05-18 02:04:32 +00:00
struct Signal {
name : String,
timeline : BTreeMap<BigInt, BigInt>,
children_arena: Vec<usize>,
parent_index : usize
}
2022-04-14 04:50:37 +00:00
#[generator(yield(&str))]
fn yield_words(file : File) {
2022-04-14 04:50:37 +00:00
let mut reader = io::BufReader::new(file);
let mut buffer = String::new();
2022-05-18 02:04:32 +00:00
let mut word_count = 0u64;
let mut EOF = false;
let line_chunk_size = 25;
2022-04-14 04:50:37 +00:00
while {!EOF} {
for _ in 0..line_chunk_size {
let bytes_read = reader.read_line(&mut buffer).unwrap();
if bytes_read == 0 {
EOF = true;
break
}
}
let words = buffer.split_ascii_whitespace();
for word in words {
yield_!(word);
}
buffer.clear();
2022-04-14 04:50:37 +00:00
}
2022-04-14 04:50:37 +00:00
}
fn main() -> std::io::Result<()> {
let args = Cli::parse();
let file = File::open(&args.path)?;
let mut word_count = 0;
mk_gen!(let mut generator = yield_words(file));
for word in generator {
word_count += 1;
}
2022-04-14 04:50:37 +00:00
Ok(())
}