gtk4/
string_object.rs

1// Take a look at the license at the top of the repository in the LICENSE file.
2
3use glib::{GStr, GString};
4
5use crate::StringObject;
6
7impl From<StringObject> for String {
8    #[inline]
9    fn from(value: StringObject) -> Self {
10        skip_assert_initialized!();
11        Self::from(&value)
12    }
13}
14
15impl From<StringObject> for GString {
16    #[inline]
17    fn from(value: StringObject) -> Self {
18        skip_assert_initialized!();
19        Self::from(&value)
20    }
21}
22
23impl<'a> From<&'a StringObject> for String {
24    #[inline]
25    fn from(value: &'a StringObject) -> Self {
26        skip_assert_initialized!();
27        value.string().to_string()
28    }
29}
30
31impl<'a> From<&'a StringObject> for GString {
32    #[inline]
33    fn from(value: &'a StringObject) -> Self {
34        skip_assert_initialized!();
35        value.string()
36    }
37}
38
39impl From<String> for StringObject {
40    #[inline]
41    fn from(value: String) -> Self {
42        skip_assert_initialized!();
43        Self::new(&value)
44    }
45}
46
47impl<'a> From<&'a String> for StringObject {
48    #[inline]
49    fn from(value: &'a String) -> Self {
50        skip_assert_initialized!();
51        Self::new(value)
52    }
53}
54
55impl<'a> From<&'a GStr> for StringObject {
56    #[inline]
57    fn from(v: &'a GStr) -> Self {
58        skip_assert_initialized!();
59        Self::new(v)
60    }
61}
62
63impl From<GString> for StringObject {
64    #[inline]
65    fn from(value: GString) -> Self {
66        skip_assert_initialized!();
67        Self::new(&value)
68    }
69}
70
71impl<'a> From<&'a GString> for StringObject {
72    #[inline]
73    fn from(value: &'a GString) -> Self {
74        skip_assert_initialized!();
75        Self::new(value)
76    }
77}
78
79impl From<&str> for StringObject {
80    #[inline]
81    fn from(value: &str) -> Self {
82        skip_assert_initialized!();
83        Self::new(value)
84    }
85}
86
87#[cfg(test)]
88mod tests {
89    use super::StringObject;
90    use crate as gtk4;
91
92    #[test]
93    fn from_into() {
94        let obj = StringObject::new("some_str");
95        assert_eq!(String::from(&obj), obj.string());
96        assert_eq!(String::from(obj), "some_str");
97    }
98}