1 //! The following is derived from Rust's 2 //! library/std/src/io/mod.rs at revision 3 //! dca3f1b786efd27be3b325ed1e01e247aa589c3b. 4 5 /// Enumeration of possible methods to seek within an I/O object. 6 /// 7 /// It is used by the [`seek`] function. 8 /// 9 /// This is similar to [`std::io::SeekFrom`], however it adds platform-specific 10 /// seek options. 11 /// 12 /// [`seek`]: crate::fs::seek 13 #[derive(Copy, PartialEq, Eq, Clone, Debug)] 14 #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] 15 pub enum SeekFrom { 16 /// Sets the offset to the provided number of bytes. 17 #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] 18 Start(#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] u64), 19 20 /// Sets the offset to the size of this object plus the specified number of 21 /// bytes. 22 /// 23 /// It is possible to seek beyond the end of an object, but it's an error 24 /// to seek before byte 0. 25 #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] 26 End(#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] i64), 27 28 /// Sets the offset to the current position plus the specified number of 29 /// bytes. 30 /// 31 /// It is possible to seek beyond the end of an object, but it's an error 32 /// to seek before byte 0. 33 #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] 34 Current(#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] i64), 35 36 /// Sets the offset to the current position plus the specified number of 37 /// bytes, plus the distance to the next byte which is not in a hole. 38 /// 39 /// If the offset is in a hole at the end of the file, the seek will fail 40 /// with [`Errno::NXIO`]. 41 /// 42 /// [`Errno::NXIO`]: crate::io::Errno::NXIO 43 #[cfg(any(apple, freebsdlike, linux_kernel, solarish))] 44 Data(i64), 45 46 /// Sets the offset to the current position plus the specified number of 47 /// bytes, plus the distance to the next byte which is in a hole. 48 /// 49 /// If there is no hole past the offset, it will be set to the end of the 50 /// file i.e. there is an implicit hole at the end of any file. 51 #[cfg(any(apple, freebsdlike, linux_kernel, solarish))] 52 Hole(i64), 53 } 54