File tree Expand file tree Collapse file tree 1 file changed +36
-6
lines changed Expand file tree Collapse file tree 1 file changed +36
-6
lines changed Original file line number Diff line number Diff line change @@ -130,6 +130,11 @@ macro_rules! __lazy_static_internal {
130
130
}
131
131
}
132
132
}
133
+ impl $crate:: LazyStatic for $N {
134
+ fn initialize( lazy: & Self ) {
135
+ let _ = & * lazy;
136
+ }
137
+ }
133
138
__lazy_static_internal!( $( $t) * ) ;
134
139
} ;
135
140
( @MAKE TY , PUB , $( #[ $attr: meta] ) * , $N: ident) => {
@@ -165,13 +170,38 @@ macro_rules! lazy_static {
165
170
( ) => ( )
166
171
}
167
172
168
- /*
169
- trait LazyStatic<T>: Deref<Target=T> {
170
-
173
+ /// Support trait for enabling a few common operation on lazy static values.
174
+ ///
175
+ /// This is implemented by each defined lazy static, and
176
+ /// used by the free functions in this crate.
177
+ pub trait LazyStatic {
178
+ #[ doc( hidden) ]
179
+ fn initialize ( lazy : & Self ) ;
171
180
}
172
181
182
+ /// Takes a shared reference to a lazy static and initializes
183
+ /// it if it has not been already.
173
184
///
174
- pub fn initialize<T>(lazy: &lazy::Lazy<T>) {
175
-
185
+ /// This can be used to control the initialization point of a lazy static.
186
+ ///
187
+ /// Example:
188
+ ///
189
+ /// ```rust
190
+ /// #[macro_use]
191
+ /// extern crate lazy_static;
192
+ ///
193
+ /// lazy_static! {
194
+ /// static ref BUFFER: Vec<u8> = (0..65537).collect();
195
+ /// }
196
+ ///
197
+ /// fn main() {
198
+ /// lazy_static::initialize(&BUFFER);
199
+ ///
200
+ /// // ...
201
+ /// work_with_initialized_data(&BUFFER);
202
+ /// }
203
+ /// # fn work_with_initialized_data(_: &[u8]) {}
204
+ /// ```
205
+ pub fn initialize < T : LazyStatic > ( lazy : & T ) {
206
+ LazyStatic :: initialize ( lazy) ;
176
207
}
177
- */
You can’t perform that action at this time.
0 commit comments