If I had code like this
pub struct Tracker {
pub file: File,
}
impl Tracker {
pub fn init() -> Tracker {
let fname = match var("WISK_TRACK") {
Ok(v) => v,
Err(_) => {
if wsroot.is_empty() {
if !Path::new("/tmp/wisktrack").exists() {
create_dir_all("/tmp/wisktrack").unwrap();
}
String::from(format!("/tmp/wisktrack/track.{}", uuid))
} else {
String::from(format!("{}/wisktrack/track.{}", wsroot, uuid))
}
},
};
let tracker = Tracker {
file : OpenOptions::new().create(true).append(true).open(&fname).unwrap(),
};
tracker
}
lazy_static! {
pub static ref TRACKER : Tracker = Tracker::init();
}
Can I write to &TRACKER.file from multiple threads? Or do I need locking around &TRACKER.file access ?