当前位置: 首页 > 软件库 > 程序开发 > 常用工具包 >

rust-jsonnet

Jsonnet 的 RUST 库
授权协议 GPL
开发语言 Rust
所属分类 程序开发、 常用工具包
软件类型 开源软件
地区 国产
投 递 者 轩辕海
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

rust-jsonnet 是 Google Jsonnet 对 rust 操作库.

github:https://github.com/yuduanchen/rust-jsonnet

google jsonnet 官方推荐库列表:http://google.github.io/jsonnet/doc/bindings.html

Google Jsonnet 介绍:

jsonnet 是google发布的新一代json协议。如果说现有的json是一种轻量级的数据交换协议的话,那么jsonnet好比json的2.0版本。赋予了json思想、给予了json注释、引用、算术运算、条件操作符,数组和对象内含引入函数局部变量继承等强大的能力。

hello world:

#[warn(unused_must_use)]
extern crate libc;
extern crate jsonnet;
use libc::c_char;
use std::str;
use std::error::Error;
use std::fs::File;
use std::io::prelude::*;
use std::path::Path;
use std::ffi::CStr;
use std::ffi::CString;
use jsonnet::ffi::command::{ Jsonnet };
pub type JsonnetResult = Result<String, String>;
pub fn ctos(msg_buf : *const c_char)-> String{
    let msg_str: &CStr = unsafe { CStr::from_ptr(msg_buf) };
    let buf: &[u8] = msg_str.to_bytes();
    let str_buf: &str = str::from_utf8(buf).unwrap();
    let msg_data: String = str_buf.to_owned();
    return msg_data;
}

pub fn version(){
    let msg_buf: *const c_char = Jsonnet::version();
    let msg_data: String = ctos(msg_buf);
    println!("{:?}", msg_data);
}

pub fn evaluate_file(){  
    let filename : *const libc::c_char = CString::new("./t.jsonnet") .unwrap().as_ptr();
    let json = match Jsonnet::evaluate_file(filename) {
    Ok(json) => json,
    Err(e) => panic!("{:?}", e)
    };
    println!("{:?}", json);
}

pub fn evaluate_snippet(){
    let path = Path::new("./t.jsonnet");
    let display = path.display();
    let mut file = match File::open(&path) {
    Err(why) => panic!("couldn't open {}: {}", display,
    Error::description(&why)),
    Ok(file) => file,
    };
    let mut s = String::new();
    file.read_to_string(&mut s).unwrap();
    let json_tpl : *const c_char = s.as_ptr() as *const c_char;
    let json = match Jsonnet::evaluate_snippet(json_tpl) {
    Ok(json) => json,
    Err(e) => panic!("{:?}", e)
    };
    println!("{:?}", json);
}

fn main() {
    version();
    evaluate_file();
    evaluate_snippet();
    Jsonnet::destroy();
}
  • 前言 本文记录了笔者学习序列化以及将其运用在网络编程中的过程,同时还记录了一个由于意外而发生的os报错( broken pipen )。笔者的学习视频来自b站令狐一冲。 一、序列化是什么? 百度百科说,序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重

  • 4. HTTP Server 4.1 构建server模块 因为HTTP Server需要引用HTTP Package,因此我们先在如下文件中添加依赖 /Users/qinjianquan/s1/httpserver/Cargo.toml [dependencies] http = {path = "../http"} 然后在如下文件夹中创建三个mod /Users/qinjianquan/s1

  • 09 - 特型与泛型 Rust 的多态性: 特型(trait) 泛型(generic) 特型:Rust 对接口或抽象基类的实现。 如下写字节的特型 std::io::Write: trait Write { fn write(&mut self, buf: &[u8]) -> Result<usize>; fn flus(&mut self) -> Result<()>; fn wri

  • 使用LVGL在RIOT上将PineTime表盘从C移植到Rust RIOT - The friendly OS for IoT https://github.com/RIOT-OS/RIOT 作者(李吕源,物联网技术与教育家)在文中谈到:将嵌入式C转换为Rust并不难(Converting Embedded C to RustLang is not that hard.) https://gith

  • xml的解析比json复杂,最起码xml在元素的属性中也能蕴藏信息。下面是一个xml文件post1.xml: <?xml version="1.0" encoding="utf-8" ?> <post id="1"> <content>你好,Golang</content> <author id="2">张三</author> </post> 表面上看,上述xml就是外层元素pos

 相关资料
  • Rust 是 Mozilla 的一个新的编程语言,由web语言的领军人物Brendan Eich(js之父),Dave Herman以及Mozilla公司的Graydon Hoare 合力开发。 创建这个新语言的目的是为了解决一个很顽疾的问题:软件的演进速度大大低于硬件的演进,软件在语言级别上无法真正利用多核计算带来的性能提升。Rust是针对多核体系提出的语言,并且吸收一些其他动态语言的重要特性,

  • 我想写一个模拟 DNF 装备增幅的程序,通过多次样本执行得到平均每件增幅 10 装备需要增幅多少次。装备 +4 之前不会失败,+4 之后会失败且失败后还会掉级,具体如下图所示: 公会秘药和普雷宠物会额外增加每次增幅的成功率 1% 和 4%,所以一共分了三种情况。 我最开始用 js 写了一版: 后来想到我刚学了 rust,不如练练手,而且 rust 很快,于是又写了一版: 然而实际上 rust 代码

  • Rust-GPU 是面向 GPU 编程的开源项目,目标是使 Rust 成为 GPU 着色器开发的“一等公民”编程语言和生态系统。 示例 use glam::{Vec3, Vec4, vec2, vec3};#[spirv(fragment)]pub fn main( #[spirv(frag_coord)] in_frag_coord: &Vec4, #[spirv(push_cons

  • Visual Rust 是一个可视化的 Rust 语言集成开发环境。这是一个 Visual Studio 的扩展,首先是一个 Rust 语言编辑器,同时可创建、编译和运行 Rust 项目。

  • Goose 是受 Locust 启发的 Rust 负载测试工具。用户行为通过标准的 Rust 代码定义,负载测试是依赖于 Goose 库的应用程序,Web 请求是使用 Reqwest HTTP 客户端发出的。 主要特性 文档齐全 基于 Reqwest,支持异步发起请求 所提供的指标与 Locust 报告一致

  • rbatis 是一个用 Rust 编写的高性能、安全、动态 SQL(编译时)ORM 框架,受 Mybatis 和 MybatisPlus 的启发。它提供高性能,基于 Future,带有 async_std/tokio,单线程基准测试可以轻松达到 200,000 QPS。 特性: 编译时动态 sql(mybatis 动态 sql 标签)、全异步(Future)、生产实践(abs_admin) 内存安

  • Racer 是 Rust 的代码补全程序,该实用程序旨在为编辑器和 IDE 提供 Rust 代码补全。 RACER = Rust Auto-Complete-er,该项目展望,也许有一天,'er' 可以代表 exploring + refactoring 等内容。 Racer 作为 Rust 语言服务器中的静态库存在,许多 IDE 等工具可以轻松集成这样的底层功能,目前包括以下工具都有集成 Rac

  • rust-av 是一个用 Rust 语言的类型,内存和数据安全属性编写的多媒体工具库。 编译 cargo build 运行测试 cargo test 说明 代码仍然在不断变化,API也正在慢慢充实,请参阅子包装箱。