Jsonnet 的 RUST 库 rust-jsonnet

码农软件 · 软件分类 · 常用工具包 · 2019-08-16 08:58:53

软件介绍

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();
}

本文地址:https://codercto.com/soft/d/12472.html

看见未来

看见未来

余晨 / 浙江大学出版社 / 2015-4-15 / 59.00元

【内容简介】 这是互联网群星闪耀的时代,巨人们用最尖端的技术和自成体系的哲学改变着我们的生活,甚至影响了整个世界和人类的历史进程。在这个时代,没有人可以避开互联网的渗透。互联网早已不是简单的技术变革,人们正试图赋予其精神和内涵,以期互联网能更好地为人类所用。 本书中作者 面对面地采访了包括马克·扎克伯格、埃隆·马斯克、杨致远、凯文·凯利、克里斯·安德森、罗伯特·希勒、迈克尔·莫瑞茨、凯......一起来看看 《看见未来》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具