napi/
version.rs

1use crate::{sys, Error, Status};
2use std::ffi::CStr;
3
4#[derive(Debug, Clone, Copy)]
5pub struct NodeVersion {
6  pub major: u32,
7  pub minor: u32,
8  pub patch: u32,
9  pub release: &'static str,
10}
11
12impl TryFrom<sys::napi_node_version> for NodeVersion {
13  type Error = Error;
14
15  fn try_from(value: sys::napi_node_version) -> Result<NodeVersion, Error> {
16    Ok(NodeVersion {
17      major: value.major,
18      minor: value.minor,
19      patch: value.patch,
20      release: unsafe {
21        CStr::from_ptr(value.release)
22          .to_str()
23          .map_err(|_| Error::new(Status::StringExpected, "Invalid release name".to_owned()))?
24      },
25    })
26  }
27}