rCore-Tutorial-v3/os/src/fs/mod.rs
2020-12-13 15:07:19 +08:00

20 lines
421 B
Rust

mod pipe;
mod stdio;
use crate::mm::UserBuffer;
use core::any::Any;
pub trait File : Any + Send + Sync {
fn read(&self, buf: UserBuffer) -> usize;
fn write(&self, buf: UserBuffer) -> usize;
fn as_any_ref(&self) -> &dyn Any;
}
impl dyn File {
pub fn downcast_ref<T: File>(&self) -> Option<&T> {
self.as_any_ref().downcast_ref::<T>()
}
}
pub use pipe::{Pipe};
pub use stdio::{Stdin, Stdout};