aboutsummaryrefslogtreecommitdiff
path: root/src/unknown.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/unknown.rs')
-rw-r--r--src/unknown.rs52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/unknown.rs b/src/unknown.rs
new file mode 100644
index 0000000..6bfbdea
--- /dev/null
+++ b/src/unknown.rs
@@ -0,0 +1,52 @@
+use std::fs::File;
+use std::io;
+use std::path::Path;
+
+static ERROR_MESSAGE: &str = "same-file is not supported on this platform.";
+// This implementation is to allow same-file to be compiled on
+// unsupported platforms in case it was incidentally included
+// as a transitive, unused dependency
+#[derive(Debug, Hash)]
+pub struct Handle;
+
+impl Eq for Handle {}
+
+impl PartialEq for Handle {
+ fn eq(&self, _other: &Handle) -> bool {
+ unreachable!(ERROR_MESSAGE);
+ }
+}
+
+impl Handle {
+ pub fn from_path<P: AsRef<Path>>(_p: P) -> io::Result<Handle> {
+ error()
+ }
+
+ pub fn from_file(_file: File) -> io::Result<Handle> {
+ error()
+ }
+
+ pub fn stdin() -> io::Result<Handle> {
+ error()
+ }
+
+ pub fn stdout() -> io::Result<Handle> {
+ error()
+ }
+
+ pub fn stderr() -> io::Result<Handle> {
+ error()
+ }
+
+ pub fn as_file(&self) -> &File {
+ unreachable!(ERROR_MESSAGE);
+ }
+
+ pub fn as_file_mut(&self) -> &mut File {
+ unreachable!(ERROR_MESSAGE);
+ }
+}
+
+fn error<T>() -> io::Result<T> {
+ Err(io::Error::new(io::ErrorKind::Other, ERROR_MESSAGE))
+}