automerge/automerge-c/src/result.rs
Jason Kankiewicz f52b9a13f7 Added Doxygen documentation generation.
Renamed `AMDatatype` to `AmDataType`.
Reorganized the `AmDataType` tags.
Renamed `AMfree()` to `AMdestroy()`.
Renamed `AMclone()` to `AMdup()`.
2022-02-24 14:39:38 -05:00

28 lines
721 B
Rust

use std::ffi::CString;
use automerge as am;
/// \class AMresult
/// \brief A container of result codes, messages and values.
pub enum AMresult {
Ok,
ObjId(am::ObjId),
Values(Vec<am::Value>),
Changes(Vec<am::Change>),
Error(CString),
}
impl AMresult {
pub (crate) fn err(s: &str) -> Self {
AMresult::Error(CString::new(s).unwrap())
}
}
impl From<Result<Option<am::ObjId>, am::AutomergeError>> for AMresult {
fn from(maybe: Result<Option<am::ObjId>, am::AutomergeError>) -> Self {
match maybe {
Ok(None) => AMresult::Ok,
Ok(Some(obj)) => AMresult::ObjId(obj),
Err(e) => AMresult::Error(CString::new(e.to_string()).unwrap()),
}
}
}