reactive_graph_std_base_model/component/
versioned.rs1use semver::Version;
2
3use crate::NAMESPACE_BASE;
4use reactive_graph_graph::component_model;
5use reactive_graph_graph::component_ty;
6use reactive_graph_graph::properties;
7
8properties!(VersionedProperties, (VERSION, "version", ""));
9
10component_ty!(COMPONENT_VERSIONED, NAMESPACE_BASE, COMPONENT_NAME_VERSIONED, "versioned");
11
12component_model!(
13 Versioned,
14 data version string,
15);
16
17pub trait SemVer: Versioned {
18 fn set_version_checked(&self, version: &str) {
19 if let Ok(version) = Version::parse(version) {
20 self.set_version(version.to_string());
21 }
22 }
23
24 fn to_version(&self) -> Option<Version> {
25 self.get_version().and_then(|version| Version::parse(&version).ok())
26 }
27}