Installation
[registry]
default = "forgejo"
[registries.forgejo]
index = "sparse+ " # Sparse index
# index = " " # Git
[net]
git-fetch-with-cli = true
cargo add okstd@0.1.6
About this package
okstd
Standards that are OK.
Getting Started
cargo add okstd@0.1.0
use okstd::prelude::*;
Examples
okstd::main
#[okstd::main]
async fn main() {
something();
}
okstd::log
#[okstd::log(debug)]
fn something() {
debug!("Hello, world!");
println!("Hello, world!");
}
okstd::test
take a function and if it's not async, just add the #[test] attribute if it's async, add the #[test] attribute and setup the runtime take the previous function body then pass it into block_on as a closure
#[okstd::test]
fn does_something() {
// do something
}
to
#[test]
fn does_something() {
// do something
}
or
#[okstd::test]
async fn does_something() {
// do something
}
to
#[test]
fn does_something() {
Runtimes::setup_runtimes().unwrap().block_on(async #body)
}
Experimental Features
Caution
Very unstable and only available under
unstable
feature flag.
okstd::crashdump
#[okstd::log(info)]
#[okstd::crashdump]
#[okstd::main]
async fn main() {
let a = 0;
let b = 1;
let c = b / a;
panic!("This is a panic");
}
will return a crashdump string like so
SourceMap { file: Some("integration/src/panics.rs"), tokens: [], index: [], names: ["backtrace::backtrace::trace_unsynchronized", "backtrace::backtrace::trace", "okstd::notokpanic::panic_hook", "core::ops::function::Fn::call", "<alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call", "std::panicking::rust_panic_with_hook", "std::panicking::begin_panic_handler::{{closure}}", "std::sys_common::backtrace::__rust_end_short_backtrace", "rust_begin_unwind", "core::panicking::panic_fmt", "core::panicking::panic", "panics::old_main::{{closure}}", "tokio::runtime::park::CachedParkThread::block_on::{{closure}}", "tokio::runtime::park::CachedParkThread::block_on", "tokio::runtime::context::blocking::BlockingRegionGuard::block_on", "tokio::runtime::scheduler::multi_thread::MultiThread::block_on::{{closure}}", "tokio::runtime::context::runtime::enter_runtime", "tokio::runtime::scheduler::multi_thread::MultiThread::block_on", "tokio::runtime::runtime::Runtime::block_on", "<okstd::okasync::Runtimes as okstd::okasync::Runtime>::block_on", "panics::main", "core::ops::function::FnOnce::call_once", "std::sys_common::backtrace::__rust_begin_short_backtrace", "std::rt::lang_start::{{closure}}", "std::panicking::try::do_call", "std::panicking::try", "std::panic::catch_unwind", "std::rt::lang_start_internal::{{closure}}", "std::rt::lang_start_internal", "std::rt::lang_start", "main", "_start"], source_root: None, sources: [], sources_prefixed: None, sources_content: [], debug_id: None }
Filename: Ok("/scratch/cargo_target/debug/panics")
Crashdump URL: https://crashdu.mp/🐧/♔/aea3ab2067116e3327bb51dc3bed94cd0/g98qBgj9qBg80qBg7r2Ng7gmOg4nxOgrnxOgt9wOgnmxOg4gpBghhpBggnpBg2spBg7npBg9lpBgp9pBgjsqBgk9pBgwqqBgl+pBgxmpBg/upOg4mqBg4kqBg500Cgnl6Kg6yuDgilvOg500Cgnl6Kg6yuDgohvOgzkqBg9mpBgslpB?cGFuaWMgb2NjdXJyZWQ6IGF0dGVtcHQgdG8gZGl2aWRlIGJ5IHplcm8gYXQgaW50ZWdyYXRpb24vc3JjL3Bhbmljcy5yczoxMToxMw
Dependencies
ID | Version |
---|---|
anyhow | ^1.0.81 |
backtrace | ^0.3.71 |
base64 | ^0.22.0 |
colored | ^2 |
crc16 | ^0.4.0 |
fastvlq | ^1.1.1 |
fern | ^0.6 |
futures | ^0.3.30 |
hex | ^0.4.3 |
log | ^0.4 |
num_cpus | ^1.16.0 |
ok_macros | ^0.1.6 |
rustc-demangle | ^0.1.23 |
serde | * |
serde_json | * |
sourcemap | ^8.0.1 |
symbolic | ^12.8.0 |
termcolor | ^1.4.1 |
tokio | ^1.37.0 |
url | ^2.5.0 |
trybuild | ^1.0.96 |