added atomic writer action for ctr c abort
This commit is contained in:
@@ -2,6 +2,8 @@
|
||||
use super::types::*;
|
||||
use chrono::{Local, NaiveDate};
|
||||
use std::collections::{HashMap, HashSet};
|
||||
use rand::rngs::StdRng;
|
||||
use rand::prelude::{Rng, SeedableRng, IndexedRandom};
|
||||
|
||||
pub fn event_key(e: &CompanyEvent) -> String {
|
||||
format!("{}|{}|{}", e.ticker, e.date, e.time)
|
||||
@@ -67,4 +69,16 @@ pub fn parse_yahoo_date(s: &str) -> anyhow::Result<NaiveDate> {
|
||||
NaiveDate::parse_from_str(s, "%B %d, %Y")
|
||||
.or_else(|_| NaiveDate::parse_from_str(s, "%b %d, %Y"))
|
||||
.map_err(|_| anyhow::anyhow!("Bad date: {s}"))
|
||||
}
|
||||
|
||||
/// Send-safe random range
|
||||
pub fn random_range(min: u64, max: u64) -> u64 {
|
||||
let mut rng = StdRng::from_rng(&mut rand::rng());
|
||||
rng.gen_range(min..max)
|
||||
}
|
||||
|
||||
/// Send-safe random choice
|
||||
pub fn choose_random<T: Clone>(items: &[T]) -> T {
|
||||
let mut rng = StdRng::from_rng(&mut rand::rng());
|
||||
items.choose(&mut rng).unwrap().clone()
|
||||
}
|
||||
Reference in New Issue
Block a user