rCore-Tutorial-v3/os/src/fs/mod.rs

20 lines
421 B
Rust
Raw Normal View History

2020-12-13 11:07:19 +04:00
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};