@@ -17,27 +17,37 @@ use windows::core::GUID;
1717///
1818/// This struct allows access to the details of an offline WSL distribution, including
1919/// its ID, name, and optional package family name.
20- ///
21- /// # Lifetime Parameters
22- /// - `'a`: The lifetime of the referenced `WslOfflineDistributionInformation` instance.
23- pub struct OfflineDistributionInformation < ' a > (
24- & ' a wslplugins_sys:: WslOfflineDistributionInformation ,
25- ) ;
20+ #[ repr( transparent) ]
21+ pub struct OfflineDistributionInformation ( wslplugins_sys:: WslOfflineDistributionInformation ) ;
2622
27- impl < ' a > OfflineDistributionInformation < ' a > {
28- /// Creates a new `OfflineDistributionInformation` instance from a raw pointer.
29- ///
30- /// # Arguments
31- /// - `ptr`: A reference to a `WslOfflineDistributionInformation` instance.
32- ///
33- /// # Returns
34- /// A safe wrapper around the provided pointer.
35- pub fn from ( ptr : & ' a wslplugins_sys:: WslOfflineDistributionInformation ) -> Self {
36- Self ( ptr)
23+ impl From < OfflineDistributionInformation > for wslplugins_sys:: WslOfflineDistributionInformation {
24+ fn from ( value : OfflineDistributionInformation ) -> Self {
25+ value. 0
26+ }
27+ }
28+
29+ impl From < wslplugins_sys:: WslOfflineDistributionInformation > for OfflineDistributionInformation {
30+ fn from ( value : wslplugins_sys:: WslOfflineDistributionInformation ) -> Self {
31+ OfflineDistributionInformation ( value)
32+ }
33+ }
34+
35+ impl AsRef < wslplugins_sys:: WslOfflineDistributionInformation > for OfflineDistributionInformation {
36+ fn as_ref ( & self ) -> & wslplugins_sys:: WslOfflineDistributionInformation {
37+ & self . 0
3738 }
3839}
3940
40- impl CoreDistributionInformation for OfflineDistributionInformation < ' _ > {
41+ impl AsRef < OfflineDistributionInformation > for wslplugins_sys:: WslOfflineDistributionInformation {
42+ fn as_ref ( & self ) -> & OfflineDistributionInformation {
43+ unsafe {
44+ & * ( self as * const wslplugins_sys:: WslOfflineDistributionInformation
45+ as * const OfflineDistributionInformation )
46+ }
47+ }
48+ }
49+
50+ impl CoreDistributionInformation for OfflineDistributionInformation {
4151 /// Retrieves the [GUID] of the offline distribution.
4252 fn id ( & self ) -> GUID {
4353 self . 0 . Id
@@ -65,7 +75,7 @@ impl CoreDistributionInformation for OfflineDistributionInformation<'_> {
6575 }
6676}
6777
68- impl < T > PartialEq < T > for OfflineDistributionInformation < ' _ >
78+ impl < T > PartialEq < T > for OfflineDistributionInformation
6979where
7080 T : CoreDistributionInformation ,
7181{
@@ -75,14 +85,14 @@ where
7585 }
7686}
7787
78- impl Hash for OfflineDistributionInformation < ' _ > {
88+ impl Hash for OfflineDistributionInformation {
7989 /// Computes a hash based on the distribution's ID.
8090 fn hash < H : std:: hash:: Hasher > ( & self , state : & mut H ) {
8191 self . id ( ) . hash ( state) ;
8292 }
8393}
8494
85- impl Display for OfflineDistributionInformation < ' _ > {
95+ impl Display for OfflineDistributionInformation {
8696 /// Formats the offline distribution information for display.
8797 ///
8898 /// The output includes the distribution's name and ID.
@@ -91,7 +101,7 @@ impl Display for OfflineDistributionInformation<'_> {
91101 }
92102}
93103
94- impl Debug for OfflineDistributionInformation < ' _ > {
104+ impl Debug for OfflineDistributionInformation {
95105 /// Formats the offline distribution information for debugging.
96106 ///
97107 /// The output includes the distribution's name, ID, and package family name.
@@ -103,3 +113,17 @@ impl Debug for OfflineDistributionInformation<'_> {
103113 . finish ( )
104114 }
105115}
116+
117+ #[ cfg( test) ]
118+ mod tests {
119+ use super :: * ;
120+ use crate :: utils:: test_transparence;
121+
122+ #[ test]
123+ fn test_layouts ( ) {
124+ test_transparence :: <
125+ wslplugins_sys:: WslOfflineDistributionInformation ,
126+ OfflineDistributionInformation ,
127+ > ( ) ;
128+ }
129+ }
0 commit comments