34 lines
1.4 KiB
Rust
34 lines
1.4 KiB
Rust
use std::collections::BTreeMap;
|
|
|
|
use super::dynamic_state::{vato007::ingey::types::HostCsvRow, DynamicState};
|
|
|
|
pub struct CsvRow {
|
|
pub values: BTreeMap<String, String>,
|
|
}
|
|
|
|
impl HostCsvRow for DynamicState {
|
|
fn columns(&mut self, self_: wasmtime::component::Resource<CsvRow>) -> Vec<String> {
|
|
let resource = self.resources.get(&self_).expect("Failed to find the required resource");
|
|
resource.values.keys().cloned().collect()
|
|
}
|
|
|
|
fn values(&mut self, self_: wasmtime::component::Resource<CsvRow>) -> Vec<String> {
|
|
let resource = self.resources.get(&self_).expect("Failed to find the required resource");
|
|
resource.values.values().cloned().collect()
|
|
}
|
|
|
|
fn entries(&mut self, self_: wasmtime::component::Resource<CsvRow>) -> Vec<(String, String,)> {
|
|
let resource = self.resources.get(&self_).expect("Failed to find the required resource");
|
|
resource.values.keys().map(|key| (key.clone(), resource.values.get(key).unwrap().clone())).collect()
|
|
}
|
|
|
|
fn value(&mut self, self_: wasmtime::component::Resource<CsvRow>, name: String) -> Option<String> {
|
|
let resource = self.resources.get(&self_).expect("Failed to find the required resource");
|
|
resource.values.get(&name).cloned()
|
|
}
|
|
|
|
fn drop(&mut self, rep: wasmtime::component::Resource<CsvRow>) -> wasmtime::Result<()> {
|
|
self.resources.delete(rep)?;
|
|
Ok(())
|
|
}
|
|
} |