know/classes/
software_package.rs1use super::ThingLike;
4use crate::prelude::*;
5use std::{rc::Rc, str::FromStr};
6
7#[derive(Debug, Clone, Default, Eq, Hash, PartialEq, PartialOrd, Ord)]
9#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
10pub struct SoftwarePackage {
11 pub name: Name,
12
13 #[cfg_attr(feature = "serde", serde(default))]
14 pub version: String,
15
16 pub link: Option<IRI>,
17}
18
19impl ThingLike for SoftwarePackage {
20 fn id(&self) -> Option<&str> {
21 None
22 }
23
24 fn name(&self) -> Option<&Name> {
25 Some(&self.name)
26 }
27}
28
29impl FromStr for SoftwarePackage {
30 type Err = ();
31
32 fn from_str(input: &str) -> Result<Self, Self::Err> {
33 Ok(SoftwarePackage {
34 name: input.to_string(),
35 ..Default::default()
36 })
37 }
38}
39
40pub type SoftwarePackageRef = Rc<SoftwarePackage>;
41
42impl ThingLike for SoftwarePackageRef {
43 fn id(&self) -> Option<&str> {
44 None
45 }
46
47 fn name(&self) -> Option<&Name> {
48 Some(&self.name)
49 }
50}