llzk-sys 30.1.0

Rust bindings to the LLZK C API.
use std::ffi::{CStr, c_char};

use crate::{
    LLZK_FUNC_NAME_COMPUTE, LLZK_FUNC_NAME_CONSTRAIN, LLZK_FUNC_NAME_PRODUCT, LLZK_LANG_ATTR_NAME,
    LLZK_MAIN_ATTR_NAME,
};

fn unwrap(s: *const c_char) -> String {
    unsafe { CStr::from_ptr(s) }.to_str().unwrap().to_string()
}

#[test]
fn test_llzk_constants() {
    assert_eq!(unwrap(unsafe { LLZK_FUNC_NAME_COMPUTE }), "compute");
    assert_eq!(unwrap(unsafe { LLZK_FUNC_NAME_CONSTRAIN }), "constrain");
    assert_eq!(unwrap(unsafe { LLZK_FUNC_NAME_PRODUCT }), "product");
    assert_eq!(unwrap(unsafe { LLZK_LANG_ATTR_NAME }), "llzk.lang");
    assert_eq!(unwrap(unsafe { LLZK_MAIN_ATTR_NAME }), "llzk.main");
}