-
Notifications
You must be signed in to change notification settings - Fork 13.9k
Closed
Description
This code(saving an emtpy map as json file and loading it):
extern mod std;
use core::path::Path;
use core::hashmap::HashMap;
use std::serialize::{Encodable, Decodable};
fn save_db(queues: &HashMap<~str,~str>) {
match io::buffered_file_writer(&Path("db.json")) {
Ok(wr) => {
let enc = ~std::json::Encoder(wr);
queues.encode(enc);
}
Err(e) => {
println(e);
}
}
}
fn load_db() -> HashMap<~str,~str> {
match io::file_reader(&Path("db.json")) {
Ok(rd) => {
match std::json::from_reader(rd) {
Ok(json) => {
let dec = ~std::json::Decoder(json);
return Decodable::decode(dec);
},
Err(_) => {
println("Db file is bad, using empty db");
return HashMap::new();
}
}
}
Err(e) => {
println(e);
return HashMap::new();
}
}
}
fn main() {
let mut map : HashMap<~str,~str> = HashMap::new();
save_db(&map);
let mut map = load_db();
map.insert(~"key", ~"val");
}
Gives on insert operation:
rust: task failed at 'modulo zero', json.rs:1
I think it is because the internal structure of map is wrong after loading.
Metadata
Metadata
Assignees
Labels
No labels