followfile 0.2.1

Provides Reader library for following file changes.
Documentation
use clap::Parser;
use followfile::FollowOptions;
use std::io::Write;
use tokio::io::AsyncReadExt;

#[derive(Parser)]
struct Args {
    #[arg(short, long)]
    follow: bool,

    path: std::path::PathBuf,
}

#[tokio::main(flavor = "current_thread")]
async fn main() -> std::io::Result<()> {
    let args = Args::parse();
    let input = tokio::fs::File::open(&args.path).await?;
    let mut input = FollowOptions::default()
        .stop_eof(!args.follow)
        .from_reader(input);

    let mut buf = vec![0; 1024];
    while let Ok(n) = input.read(&mut buf).await {
        if n == 0 {
            break;
        }
        std::io::stdout().write_all(&buf[..n])?;
    }
    Ok(())
}