tauri_store_utils/
version.rs1use semver::Version;
2use std::borrow::Cow;
3use std::sync::Arc;
4
5pub trait Semver {
6 fn semver(&self) -> Version;
12}
13
14impl Semver for Version {
15 #[inline]
16 fn semver(&self) -> Version {
17 self.clone()
18 }
19}
20
21impl Semver for &str {
22 fn semver(&self) -> Version {
23 Version::parse(self).unwrap_or_else(|_| {
24 panic!("{self} is not a valid semver version");
25 })
26 }
27}
28
29impl Semver for String {
30 #[inline]
31 fn semver(&self) -> Version {
32 self.as_str().semver()
33 }
34}
35
36impl Semver for &String {
37 #[inline]
38 fn semver(&self) -> Version {
39 self.as_str().semver()
40 }
41}
42
43impl Semver for Arc<str> {
44 fn semver(&self) -> Version {
45 self.as_ref().semver()
46 }
47}
48
49impl Semver for Box<str> {
50 fn semver(&self) -> Version {
51 self.as_ref().semver()
52 }
53}
54
55impl Semver for Cow<'_, str> {
56 fn semver(&self) -> Version {
57 self.as_ref().semver()
58 }
59}
60
61impl Semver for u64 {
62 #[inline]
63 fn semver(&self) -> Version {
64 Version::new(*self, 0, 0)
65 }
66}
67
68impl Semver for (u64, u64) {
69 #[inline]
70 fn semver(&self) -> Version {
71 Version::new(self.0, self.1, 0)
72 }
73}
74
75impl Semver for (u64, u64, u64) {
76 #[inline]
77 fn semver(&self) -> Version {
78 Version::new(self.0, self.1, self.2)
79 }
80}