6个版本 (3个重大更新)

0.4.0 2020年12月21日
0.3.0 2019年12月9日
0.2.1 2019年12月9日
0.2.0 2019年10月28日
0.1.1 2019年10月6日

#475 in 进程宏

Download history 13/week @ 2024-03-10 41/week @ 2024-03-31 2/week @ 2024-04-07 1/week @ 2024-04-21 1/week @ 2024-04-28

每月52次下载

Apache-2.0/MIT

14KB
73

Fort

Fort是Bastion的进程宏属性crate。

使用方法

[dependencies]
fort = "0.4"
bastion = "0.4"

您可以直接使用fort将工作负载加载到根管理员上:

#[fort::root]
async fn main(_: BastionContext) -> Result<(), ()> {
    println!("Running in Bastion runtime!");
    Ok(())
}

使用fort使您的程序具有容错能力

#[fort::root]
async fn main(_: BastionContext) -> Result<(), ()> {
    loop {
        println!("Undying main!");
        panic!("Error")
    }
}

您想启动多个进程

#[fort::root(redundancy = 10)]
async fn main(_: BastionContext) -> Result<(), ()> {
    loop {
        println!("Undying main!");
        panic!("Error")
    }
}

示例TCP服务器

use std::io::Write;
use std::net::TcpListener;

#[fort::root]
async fn main(_: BastionContext) -> Result<(), ()> {
    let listener = TcpListener::bind("127.0.0.1:2278").unwrap();
    println!("TCP server started at 127.0.0.1:2278");
    for stream in listener.incoming() {
        thread::spawn(|| {
            let mut stream = stream.unwrap();
            stream.write_all(b"Hello World\r\n").unwrap();
            panic!("Fail in thread!");
        });
        panic!("Fail in event loop");
    }

    Ok(())
}

依赖项

~1.5MB
~35K SLoC