lib-nested/math/fib/src/main.rs

59 lines
940 B
Rust
Raw Normal View History

2021-04-19 05:02:46 +02:00
use std::{
fs::File,
io::{Read, Write},
os::unix::io::FromRawFd
};
fn fib(n: u64) -> u64 {
let mut y = 0;
let mut y1 = 1;
let mut y2 = 0;
for _ in 0 .. n {
y = y1 + y2;
y2 = y1;
y1 = y;
}
y
}
fn main() {
nested::magic_header();
eprintln!(" Fibonacci Sequence");
nested::magic_header();
eprintln!("
interface (Sequence ) 0 1");
let mut f0 = unsafe { File::from_raw_fd(0) };
eprintln!("
> 0: n
( )
( MachineInt )
( MachineWord )
( Pipe Shot MachineWord )
");
let mut f1 = unsafe { File::from_raw_fd(1) };
eprintln!("
< 1: n'th fibonacci number
( )
( MachineInt )
( MachineWord )
( Pipe Shot MachineWord )
");
nested::magic_header();
let mut bytes = [0 as u8; 8];
f0.read_exact(&mut bytes);
let n = u64::from_le_bytes(bytes);
bytes = fib(n).to_le_bytes();
f1.write(&bytes);
}