judge-runner

Crates.iojudge-runner
lib.rsjudge-runner
version1.0.0
created_at2025-12-19 07:16:43.286611+00
updated_at2026-01-01 07:25:39.866325+00
descriptionA code runner library for online judge system
homepagehttps://github.com/f-code-club/judge-runner
repositoryhttps://github.com/f-code-club/judge-runner
max_upload_size
id1994334
size71,815
Huỳnh Minh Khang (akagiyuu)

documentation

README

Judge Runner

A code runner library for online judge system.

Supported Languages

  • Rust
  • C++
  • Python
  • Java
  • ... More language can be defined

Usage

use std::time::Duration;

use byte_unit::Byte;
use judge_runner::{Code, Judge, Resource, language};

#[tokio::main]
async fn main() {
    let checker_code = r#"
#include<bits/stdc++.h>

using namespace std;

int main() {
    string s, res;
    cin >> s >> res;
    if (s == res) {
        return 0;
    } else {
        return 1;
    }
}
    "#;
    let code = r#"
#include<bits/stdc++.h>

using namespace std;

int main() {
    string s;
    cin >> s;
    cout << s << endl;
}
"#;

    let checker = Judge::builder()
        .main(Code {
            content: checker_code.as_bytes(),
            language: language::CPP,
        })
        .build()
        .await
        .unwrap();
    let checker = checker.compile().await.unwrap().unwrap();
    let checker = checker.read_executable().await.unwrap();

    let judge = Judge::builder()
        .checker(Code {
            content: &checker,
            language: language::CPP,
        })
        .main(Code {
            content: code.as_bytes(),
            language: language::CPP,
        })
        .time_limit(Duration::from_secs(1))
        .resource(Resource {
            memory: Byte::GIGABYTE,
            ..Default::default()
        })
        .build()
        .await
        .unwrap();
    let judge = judge.compile().await.unwrap().unwrap();

    let input = "4";
    let metrics = judge.run(input.as_bytes()).await.unwrap();
    println!("{:#?}", metrics);
}

License

This project is licensed under the MIT License - see the LICENSE file for details.

Commit count: 0

cargo fmt