40 lines
637 B
Text
40 lines
637 B
Text
|
|
pub mod IO {
|
|
|
|
import "./numbers"
|
|
import "./either"
|
|
import "./vec"
|
|
import "./string"
|
|
|
|
pub type Result<T> = Either<Error, T>;
|
|
|
|
pub foreign "JS" fn print(message: String) {
|
|
process.stdout.write(message);
|
|
}
|
|
|
|
pub struct File;
|
|
|
|
pub trait Read {
|
|
fn read(self, count: usize, target: Vec<u8>) -> Result<usize>;
|
|
}
|
|
|
|
impl Read for File {
|
|
|
|
foreign "JS" fn read(self, count, target) -> Result<usize> {
|
|
|
|
import * as fs from "fs"
|
|
|
|
try {
|
|
return Ok(fs.readSync(self.fd, target, 0, count, null));
|
|
} catch (e) {
|
|
return Err(e.code);
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// IO::print("Hello, world!");
|
|
|