1 // This file was generated by gir (https://github.com/gtk-rs/gir)
2 // from gir-files (https://github.com/gtk-rs/gir-files)
3 // DO NOT EDIT
4 
5 use crate::FileAttributeMatcher;
6 use crate::FileAttributeStatus;
7 use crate::FileAttributeType;
8 use crate::FileType;
9 use crate::Icon;
10 use glib::object::IsA;
11 use glib::translate::*;
12 use std::fmt;
13 
14 glib::wrapper! {
15     #[doc(alias = "GFileInfo")]
16     pub struct FileInfo(Object<ffi::GFileInfo, ffi::GFileInfoClass>);
17 
18     match fn {
19         type_ => || ffi::g_file_info_get_type(),
20     }
21 }
22 
23 impl FileInfo {
24     #[doc(alias = "g_file_info_new")]
new() -> FileInfo25     pub fn new() -> FileInfo {
26         unsafe { from_glib_full(ffi::g_file_info_new()) }
27     }
28 
29     #[doc(alias = "g_file_info_clear_status")]
clear_status(&self)30     pub fn clear_status(&self) {
31         unsafe {
32             ffi::g_file_info_clear_status(self.to_glib_none().0);
33         }
34     }
35 
36     #[doc(alias = "g_file_info_copy_into")]
copy_into(&self, dest_info: &FileInfo)37     pub fn copy_into(&self, dest_info: &FileInfo) {
38         unsafe {
39             ffi::g_file_info_copy_into(self.to_glib_none().0, dest_info.to_glib_none().0);
40         }
41     }
42 
43     #[doc(alias = "g_file_info_dup")]
dup(&self) -> FileInfo44     pub fn dup(&self) -> FileInfo {
45         unsafe { from_glib_full(ffi::g_file_info_dup(self.to_glib_none().0)) }
46     }
47 
48     #[doc(alias = "g_file_info_get_attribute_as_string")]
49     #[doc(alias = "get_attribute_as_string")]
attribute_as_string(&self, attribute: &str) -> Option<glib::GString>50     pub fn attribute_as_string(&self, attribute: &str) -> Option<glib::GString> {
51         unsafe {
52             from_glib_full(ffi::g_file_info_get_attribute_as_string(
53                 self.to_glib_none().0,
54                 attribute.to_glib_none().0,
55             ))
56         }
57     }
58 
59     #[doc(alias = "g_file_info_get_attribute_boolean")]
60     #[doc(alias = "get_attribute_boolean")]
boolean(&self, attribute: &str) -> bool61     pub fn boolean(&self, attribute: &str) -> bool {
62         unsafe {
63             from_glib(ffi::g_file_info_get_attribute_boolean(
64                 self.to_glib_none().0,
65                 attribute.to_glib_none().0,
66             ))
67         }
68     }
69 
70     #[doc(alias = "g_file_info_get_attribute_byte_string")]
71     #[doc(alias = "get_attribute_byte_string")]
attribute_byte_string(&self, attribute: &str) -> Option<glib::GString>72     pub fn attribute_byte_string(&self, attribute: &str) -> Option<glib::GString> {
73         unsafe {
74             from_glib_none(ffi::g_file_info_get_attribute_byte_string(
75                 self.to_glib_none().0,
76                 attribute.to_glib_none().0,
77             ))
78         }
79     }
80 
81     //#[doc(alias = "g_file_info_get_attribute_data")]
82     //#[doc(alias = "get_attribute_data")]
83     //pub fn attribute_data(&self, attribute: &str, value_pp: /*Unimplemented*/&mut Fundamental: Pointer) -> Option<(FileAttributeType, FileAttributeStatus)> {
84     //    unsafe { TODO: call ffi:g_file_info_get_attribute_data() }
85     //}
86 
87     #[doc(alias = "g_file_info_get_attribute_int32")]
88     #[doc(alias = "get_attribute_int32")]
attribute_int32(&self, attribute: &str) -> i3289     pub fn attribute_int32(&self, attribute: &str) -> i32 {
90         unsafe {
91             ffi::g_file_info_get_attribute_int32(self.to_glib_none().0, attribute.to_glib_none().0)
92         }
93     }
94 
95     #[doc(alias = "g_file_info_get_attribute_int64")]
96     #[doc(alias = "get_attribute_int64")]
attribute_int64(&self, attribute: &str) -> i6497     pub fn attribute_int64(&self, attribute: &str) -> i64 {
98         unsafe {
99             ffi::g_file_info_get_attribute_int64(self.to_glib_none().0, attribute.to_glib_none().0)
100         }
101     }
102 
103     #[doc(alias = "g_file_info_get_attribute_object")]
104     #[doc(alias = "get_attribute_object")]
attribute_object(&self, attribute: &str) -> Option<glib::Object>105     pub fn attribute_object(&self, attribute: &str) -> Option<glib::Object> {
106         unsafe {
107             from_glib_none(ffi::g_file_info_get_attribute_object(
108                 self.to_glib_none().0,
109                 attribute.to_glib_none().0,
110             ))
111         }
112     }
113 
114     #[doc(alias = "g_file_info_get_attribute_status")]
115     #[doc(alias = "get_attribute_status")]
attribute_status(&self, attribute: &str) -> FileAttributeStatus116     pub fn attribute_status(&self, attribute: &str) -> FileAttributeStatus {
117         unsafe {
118             from_glib(ffi::g_file_info_get_attribute_status(
119                 self.to_glib_none().0,
120                 attribute.to_glib_none().0,
121             ))
122         }
123     }
124 
125     #[doc(alias = "g_file_info_get_attribute_string")]
126     #[doc(alias = "get_attribute_string")]
attribute_string(&self, attribute: &str) -> Option<glib::GString>127     pub fn attribute_string(&self, attribute: &str) -> Option<glib::GString> {
128         unsafe {
129             from_glib_none(ffi::g_file_info_get_attribute_string(
130                 self.to_glib_none().0,
131                 attribute.to_glib_none().0,
132             ))
133         }
134     }
135 
136     #[doc(alias = "g_file_info_get_attribute_stringv")]
137     #[doc(alias = "get_attribute_stringv")]
attribute_stringv(&self, attribute: &str) -> Vec<glib::GString>138     pub fn attribute_stringv(&self, attribute: &str) -> Vec<glib::GString> {
139         unsafe {
140             FromGlibPtrContainer::from_glib_none(ffi::g_file_info_get_attribute_stringv(
141                 self.to_glib_none().0,
142                 attribute.to_glib_none().0,
143             ))
144         }
145     }
146 
147     #[doc(alias = "g_file_info_get_attribute_type")]
148     #[doc(alias = "get_attribute_type")]
attribute_type(&self, attribute: &str) -> FileAttributeType149     pub fn attribute_type(&self, attribute: &str) -> FileAttributeType {
150         unsafe {
151             from_glib(ffi::g_file_info_get_attribute_type(
152                 self.to_glib_none().0,
153                 attribute.to_glib_none().0,
154             ))
155         }
156     }
157 
158     #[doc(alias = "g_file_info_get_attribute_uint32")]
159     #[doc(alias = "get_attribute_uint32")]
attribute_uint32(&self, attribute: &str) -> u32160     pub fn attribute_uint32(&self, attribute: &str) -> u32 {
161         unsafe {
162             ffi::g_file_info_get_attribute_uint32(self.to_glib_none().0, attribute.to_glib_none().0)
163         }
164     }
165 
166     #[doc(alias = "g_file_info_get_attribute_uint64")]
167     #[doc(alias = "get_attribute_uint64")]
attribute_uint64(&self, attribute: &str) -> u64168     pub fn attribute_uint64(&self, attribute: &str) -> u64 {
169         unsafe {
170             ffi::g_file_info_get_attribute_uint64(self.to_glib_none().0, attribute.to_glib_none().0)
171         }
172     }
173 
174     #[doc(alias = "g_file_info_get_content_type")]
175     #[doc(alias = "get_content_type")]
content_type(&self) -> Option<glib::GString>176     pub fn content_type(&self) -> Option<glib::GString> {
177         unsafe { from_glib_none(ffi::g_file_info_get_content_type(self.to_glib_none().0)) }
178     }
179 
180     #[doc(alias = "g_file_info_get_deletion_date")]
181     #[doc(alias = "get_deletion_date")]
deletion_date(&self) -> Option<glib::DateTime>182     pub fn deletion_date(&self) -> Option<glib::DateTime> {
183         unsafe { from_glib_full(ffi::g_file_info_get_deletion_date(self.to_glib_none().0)) }
184     }
185 
186     #[doc(alias = "g_file_info_get_display_name")]
187     #[doc(alias = "get_display_name")]
display_name(&self) -> glib::GString188     pub fn display_name(&self) -> glib::GString {
189         unsafe { from_glib_none(ffi::g_file_info_get_display_name(self.to_glib_none().0)) }
190     }
191 
192     #[doc(alias = "g_file_info_get_edit_name")]
193     #[doc(alias = "get_edit_name")]
edit_name(&self) -> glib::GString194     pub fn edit_name(&self) -> glib::GString {
195         unsafe { from_glib_none(ffi::g_file_info_get_edit_name(self.to_glib_none().0)) }
196     }
197 
198     #[doc(alias = "g_file_info_get_etag")]
199     #[doc(alias = "get_etag")]
etag(&self) -> Option<glib::GString>200     pub fn etag(&self) -> Option<glib::GString> {
201         unsafe { from_glib_none(ffi::g_file_info_get_etag(self.to_glib_none().0)) }
202     }
203 
204     #[doc(alias = "g_file_info_get_file_type")]
205     #[doc(alias = "get_file_type")]
file_type(&self) -> FileType206     pub fn file_type(&self) -> FileType {
207         unsafe { from_glib(ffi::g_file_info_get_file_type(self.to_glib_none().0)) }
208     }
209 
210     #[doc(alias = "g_file_info_get_icon")]
211     #[doc(alias = "get_icon")]
icon(&self) -> Option<Icon>212     pub fn icon(&self) -> Option<Icon> {
213         unsafe { from_glib_none(ffi::g_file_info_get_icon(self.to_glib_none().0)) }
214     }
215 
216     #[doc(alias = "g_file_info_get_is_backup")]
217     #[doc(alias = "get_is_backup")]
is_backup(&self) -> bool218     pub fn is_backup(&self) -> bool {
219         unsafe { from_glib(ffi::g_file_info_get_is_backup(self.to_glib_none().0)) }
220     }
221 
222     #[doc(alias = "g_file_info_get_is_hidden")]
223     #[doc(alias = "get_is_hidden")]
is_hidden(&self) -> bool224     pub fn is_hidden(&self) -> bool {
225         unsafe { from_glib(ffi::g_file_info_get_is_hidden(self.to_glib_none().0)) }
226     }
227 
228     #[doc(alias = "g_file_info_get_is_symlink")]
229     #[doc(alias = "get_is_symlink")]
is_symlink(&self) -> bool230     pub fn is_symlink(&self) -> bool {
231         unsafe { from_glib(ffi::g_file_info_get_is_symlink(self.to_glib_none().0)) }
232     }
233 
234     #[cfg(any(feature = "v2_62", feature = "dox"))]
235     #[cfg_attr(feature = "dox", doc(cfg(feature = "v2_62")))]
236     #[doc(alias = "g_file_info_get_modification_date_time")]
237     #[doc(alias = "get_modification_date_time")]
modification_date_time(&self) -> Option<glib::DateTime>238     pub fn modification_date_time(&self) -> Option<glib::DateTime> {
239         unsafe {
240             from_glib_full(ffi::g_file_info_get_modification_date_time(
241                 self.to_glib_none().0,
242             ))
243         }
244     }
245 
246     #[doc(alias = "g_file_info_get_name")]
247     #[doc(alias = "get_name")]
name(&self) -> std::path::PathBuf248     pub fn name(&self) -> std::path::PathBuf {
249         unsafe { from_glib_none(ffi::g_file_info_get_name(self.to_glib_none().0)) }
250     }
251 
252     #[doc(alias = "g_file_info_get_size")]
253     #[doc(alias = "get_size")]
size(&self) -> i64254     pub fn size(&self) -> i64 {
255         unsafe { ffi::g_file_info_get_size(self.to_glib_none().0) }
256     }
257 
258     #[doc(alias = "g_file_info_get_sort_order")]
259     #[doc(alias = "get_sort_order")]
sort_order(&self) -> i32260     pub fn sort_order(&self) -> i32 {
261         unsafe { ffi::g_file_info_get_sort_order(self.to_glib_none().0) }
262     }
263 
264     #[doc(alias = "g_file_info_get_symbolic_icon")]
265     #[doc(alias = "get_symbolic_icon")]
symbolic_icon(&self) -> Option<Icon>266     pub fn symbolic_icon(&self) -> Option<Icon> {
267         unsafe { from_glib_none(ffi::g_file_info_get_symbolic_icon(self.to_glib_none().0)) }
268     }
269 
270     #[doc(alias = "g_file_info_get_symlink_target")]
271     #[doc(alias = "get_symlink_target")]
symlink_target(&self) -> Option<glib::GString>272     pub fn symlink_target(&self) -> Option<glib::GString> {
273         unsafe { from_glib_none(ffi::g_file_info_get_symlink_target(self.to_glib_none().0)) }
274     }
275 
276     #[doc(alias = "g_file_info_has_attribute")]
has_attribute(&self, attribute: &str) -> bool277     pub fn has_attribute(&self, attribute: &str) -> bool {
278         unsafe {
279             from_glib(ffi::g_file_info_has_attribute(
280                 self.to_glib_none().0,
281                 attribute.to_glib_none().0,
282             ))
283         }
284     }
285 
286     #[doc(alias = "g_file_info_has_namespace")]
has_namespace(&self, name_space: &str) -> bool287     pub fn has_namespace(&self, name_space: &str) -> bool {
288         unsafe {
289             from_glib(ffi::g_file_info_has_namespace(
290                 self.to_glib_none().0,
291                 name_space.to_glib_none().0,
292             ))
293         }
294     }
295 
296     #[doc(alias = "g_file_info_list_attributes")]
list_attributes(&self, name_space: Option<&str>) -> Vec<glib::GString>297     pub fn list_attributes(&self, name_space: Option<&str>) -> Vec<glib::GString> {
298         unsafe {
299             FromGlibPtrContainer::from_glib_full(ffi::g_file_info_list_attributes(
300                 self.to_glib_none().0,
301                 name_space.to_glib_none().0,
302             ))
303         }
304     }
305 
306     #[doc(alias = "g_file_info_remove_attribute")]
remove_attribute(&self, attribute: &str)307     pub fn remove_attribute(&self, attribute: &str) {
308         unsafe {
309             ffi::g_file_info_remove_attribute(self.to_glib_none().0, attribute.to_glib_none().0);
310         }
311     }
312 
313     //#[doc(alias = "g_file_info_set_attribute")]
314     //pub fn set_attribute(&self, attribute: &str, type_: FileAttributeType, value_p: /*Unimplemented*/Fundamental: Pointer) {
315     //    unsafe { TODO: call ffi:g_file_info_set_attribute() }
316     //}
317 
318     #[doc(alias = "g_file_info_set_attribute_boolean")]
set_attribute_boolean(&self, attribute: &str, attr_value: bool)319     pub fn set_attribute_boolean(&self, attribute: &str, attr_value: bool) {
320         unsafe {
321             ffi::g_file_info_set_attribute_boolean(
322                 self.to_glib_none().0,
323                 attribute.to_glib_none().0,
324                 attr_value.into_glib(),
325             );
326         }
327     }
328 
329     #[doc(alias = "g_file_info_set_attribute_byte_string")]
set_attribute_byte_string(&self, attribute: &str, attr_value: &str)330     pub fn set_attribute_byte_string(&self, attribute: &str, attr_value: &str) {
331         unsafe {
332             ffi::g_file_info_set_attribute_byte_string(
333                 self.to_glib_none().0,
334                 attribute.to_glib_none().0,
335                 attr_value.to_glib_none().0,
336             );
337         }
338     }
339 
340     #[doc(alias = "g_file_info_set_attribute_int32")]
set_attribute_int32(&self, attribute: &str, attr_value: i32)341     pub fn set_attribute_int32(&self, attribute: &str, attr_value: i32) {
342         unsafe {
343             ffi::g_file_info_set_attribute_int32(
344                 self.to_glib_none().0,
345                 attribute.to_glib_none().0,
346                 attr_value,
347             );
348         }
349     }
350 
351     #[doc(alias = "g_file_info_set_attribute_int64")]
set_attribute_int64(&self, attribute: &str, attr_value: i64)352     pub fn set_attribute_int64(&self, attribute: &str, attr_value: i64) {
353         unsafe {
354             ffi::g_file_info_set_attribute_int64(
355                 self.to_glib_none().0,
356                 attribute.to_glib_none().0,
357                 attr_value,
358             );
359         }
360     }
361 
362     #[doc(alias = "g_file_info_set_attribute_mask")]
set_attribute_mask(&self, mask: &FileAttributeMatcher)363     pub fn set_attribute_mask(&self, mask: &FileAttributeMatcher) {
364         unsafe {
365             ffi::g_file_info_set_attribute_mask(self.to_glib_none().0, mask.to_glib_none().0);
366         }
367     }
368 
369     #[doc(alias = "g_file_info_set_attribute_object")]
set_attribute_object<P: IsA<glib::Object>>(&self, attribute: &str, attr_value: &P)370     pub fn set_attribute_object<P: IsA<glib::Object>>(&self, attribute: &str, attr_value: &P) {
371         unsafe {
372             ffi::g_file_info_set_attribute_object(
373                 self.to_glib_none().0,
374                 attribute.to_glib_none().0,
375                 attr_value.as_ref().to_glib_none().0,
376             );
377         }
378     }
379 
380     #[doc(alias = "g_file_info_set_attribute_status")]
set_attribute_status(&self, attribute: &str, status: FileAttributeStatus) -> bool381     pub fn set_attribute_status(&self, attribute: &str, status: FileAttributeStatus) -> bool {
382         unsafe {
383             from_glib(ffi::g_file_info_set_attribute_status(
384                 self.to_glib_none().0,
385                 attribute.to_glib_none().0,
386                 status.into_glib(),
387             ))
388         }
389     }
390 
391     #[doc(alias = "g_file_info_set_attribute_string")]
set_attribute_string(&self, attribute: &str, attr_value: &str)392     pub fn set_attribute_string(&self, attribute: &str, attr_value: &str) {
393         unsafe {
394             ffi::g_file_info_set_attribute_string(
395                 self.to_glib_none().0,
396                 attribute.to_glib_none().0,
397                 attr_value.to_glib_none().0,
398             );
399         }
400     }
401 
402     #[doc(alias = "g_file_info_set_attribute_stringv")]
set_attribute_stringv(&self, attribute: &str, attr_value: &[&str])403     pub fn set_attribute_stringv(&self, attribute: &str, attr_value: &[&str]) {
404         unsafe {
405             ffi::g_file_info_set_attribute_stringv(
406                 self.to_glib_none().0,
407                 attribute.to_glib_none().0,
408                 attr_value.to_glib_none().0,
409             );
410         }
411     }
412 
413     #[doc(alias = "g_file_info_set_attribute_uint32")]
set_attribute_uint32(&self, attribute: &str, attr_value: u32)414     pub fn set_attribute_uint32(&self, attribute: &str, attr_value: u32) {
415         unsafe {
416             ffi::g_file_info_set_attribute_uint32(
417                 self.to_glib_none().0,
418                 attribute.to_glib_none().0,
419                 attr_value,
420             );
421         }
422     }
423 
424     #[doc(alias = "g_file_info_set_attribute_uint64")]
set_attribute_uint64(&self, attribute: &str, attr_value: u64)425     pub fn set_attribute_uint64(&self, attribute: &str, attr_value: u64) {
426         unsafe {
427             ffi::g_file_info_set_attribute_uint64(
428                 self.to_glib_none().0,
429                 attribute.to_glib_none().0,
430                 attr_value,
431             );
432         }
433     }
434 
435     #[doc(alias = "g_file_info_set_content_type")]
set_content_type(&self, content_type: &str)436     pub fn set_content_type(&self, content_type: &str) {
437         unsafe {
438             ffi::g_file_info_set_content_type(self.to_glib_none().0, content_type.to_glib_none().0);
439         }
440     }
441 
442     #[doc(alias = "g_file_info_set_display_name")]
set_display_name(&self, display_name: &str)443     pub fn set_display_name(&self, display_name: &str) {
444         unsafe {
445             ffi::g_file_info_set_display_name(self.to_glib_none().0, display_name.to_glib_none().0);
446         }
447     }
448 
449     #[doc(alias = "g_file_info_set_edit_name")]
set_edit_name(&self, edit_name: &str)450     pub fn set_edit_name(&self, edit_name: &str) {
451         unsafe {
452             ffi::g_file_info_set_edit_name(self.to_glib_none().0, edit_name.to_glib_none().0);
453         }
454     }
455 
456     #[doc(alias = "g_file_info_set_file_type")]
set_file_type(&self, type_: FileType)457     pub fn set_file_type(&self, type_: FileType) {
458         unsafe {
459             ffi::g_file_info_set_file_type(self.to_glib_none().0, type_.into_glib());
460         }
461     }
462 
463     #[doc(alias = "g_file_info_set_icon")]
set_icon<P: IsA<Icon>>(&self, icon: &P)464     pub fn set_icon<P: IsA<Icon>>(&self, icon: &P) {
465         unsafe {
466             ffi::g_file_info_set_icon(self.to_glib_none().0, icon.as_ref().to_glib_none().0);
467         }
468     }
469 
470     #[doc(alias = "g_file_info_set_is_hidden")]
set_is_hidden(&self, is_hidden: bool)471     pub fn set_is_hidden(&self, is_hidden: bool) {
472         unsafe {
473             ffi::g_file_info_set_is_hidden(self.to_glib_none().0, is_hidden.into_glib());
474         }
475     }
476 
477     #[doc(alias = "g_file_info_set_is_symlink")]
set_is_symlink(&self, is_symlink: bool)478     pub fn set_is_symlink(&self, is_symlink: bool) {
479         unsafe {
480             ffi::g_file_info_set_is_symlink(self.to_glib_none().0, is_symlink.into_glib());
481         }
482     }
483 
484     #[cfg(any(feature = "v2_62", feature = "dox"))]
485     #[cfg_attr(feature = "dox", doc(cfg(feature = "v2_62")))]
486     #[doc(alias = "g_file_info_set_modification_date_time")]
set_modification_date_time(&self, mtime: &glib::DateTime)487     pub fn set_modification_date_time(&self, mtime: &glib::DateTime) {
488         unsafe {
489             ffi::g_file_info_set_modification_date_time(
490                 self.to_glib_none().0,
491                 mtime.to_glib_none().0,
492             );
493         }
494     }
495 
496     #[doc(alias = "g_file_info_set_name")]
set_name<P: AsRef<std::path::Path>>(&self, name: P)497     pub fn set_name<P: AsRef<std::path::Path>>(&self, name: P) {
498         unsafe {
499             ffi::g_file_info_set_name(self.to_glib_none().0, name.as_ref().to_glib_none().0);
500         }
501     }
502 
503     #[doc(alias = "g_file_info_set_size")]
set_size(&self, size: i64)504     pub fn set_size(&self, size: i64) {
505         unsafe {
506             ffi::g_file_info_set_size(self.to_glib_none().0, size);
507         }
508     }
509 
510     #[doc(alias = "g_file_info_set_sort_order")]
set_sort_order(&self, sort_order: i32)511     pub fn set_sort_order(&self, sort_order: i32) {
512         unsafe {
513             ffi::g_file_info_set_sort_order(self.to_glib_none().0, sort_order);
514         }
515     }
516 
517     #[doc(alias = "g_file_info_set_symbolic_icon")]
set_symbolic_icon<P: IsA<Icon>>(&self, icon: &P)518     pub fn set_symbolic_icon<P: IsA<Icon>>(&self, icon: &P) {
519         unsafe {
520             ffi::g_file_info_set_symbolic_icon(
521                 self.to_glib_none().0,
522                 icon.as_ref().to_glib_none().0,
523             );
524         }
525     }
526 
527     #[doc(alias = "g_file_info_set_symlink_target")]
set_symlink_target(&self, symlink_target: &str)528     pub fn set_symlink_target(&self, symlink_target: &str) {
529         unsafe {
530             ffi::g_file_info_set_symlink_target(
531                 self.to_glib_none().0,
532                 symlink_target.to_glib_none().0,
533             );
534         }
535     }
536 
537     #[doc(alias = "g_file_info_unset_attribute_mask")]
unset_attribute_mask(&self)538     pub fn unset_attribute_mask(&self) {
539         unsafe {
540             ffi::g_file_info_unset_attribute_mask(self.to_glib_none().0);
541         }
542     }
543 }
544 
545 impl Default for FileInfo {
default() -> Self546     fn default() -> Self {
547         Self::new()
548     }
549 }
550 
551 impl fmt::Display for FileInfo {
fmt(&self, f: &mut fmt::Formatter) -> fmt::Result552     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
553         f.write_str("FileInfo")
554     }
555 }
556