#cmd-line #clucompany #proc #cluproc

nightly cluproccmdline

快速安全的解析/proc/cmdline

5个版本

使用旧的Rust 2015

0.1.5 2018年7月28日
0.1.4 2018年5月17日
0.1.3 2018年5月14日
0.1.2 2018年5月7日
0.1.1 2018年5月6日

#166FFI

每月24次下载
carrier 中使用

Apache-2.0

21KB
456

cluProcCmdline

Build Status Apache licensed Documentation

快速安全解析/proc/cmdline。

使用DefaultIter

1

use cluproccmdline::Cmdline;

let mut cmdline = cluproccmdline::this_machine().unwrap();
for (name, value) in cmdline.iter() {
		if let Some(name) = name {
				println!(
						"Cmdline_str: {} {}", 
						String::from_utf8(name.to_vec()).unwrap(), 
						String::from_utf8(value.to_vec()).unwrap()
				);
		}
		// OUTPUT: 
		// IF /proc/cmdline = "BOOT_IMAGE=/boot/vmlinuz-linux-zen nmi_watchdog=0"
		// TO -> "Cmdline_str: BOOT_IMAGE /boot/vmlinuz-linux-zen"
		// TO -> "Cmdline_str: nmi_watchdog 0"
}	

2

use cluproccmdline::Cmdline;

let mut cmdline = cluproccmdline::array_slice(b"test=all rw");
let mut iter = cmdline.iter();

while let Some((Some(name), value)) = iter.next() {
		println!("{} {}", 
				String::from_utf8(name.to_vec()).unwrap(), 
				String::from_utf8(value.to_vec()).unwrap()
		);
		// OUTPUT:
		// rw
}

使用OneIter

1

use cluproccmdline::Cmdline;

let mut cmdline = cluproccmdline::array_slice(b"test=all rw");
for value in cmdline.iter_one() {
		println!("{}", 
				String::from_utf8(value.to_vec()).unwrap()
		);
		// OUTPUT: 
		// rw
}

2

use cluproccmdline::Cmdline;

let mut cmdline = cluproccmdline::array_slice(b"test=all rw");
let mut iter = cmdline.iter_one();

while let Some(value) = iter.next() {
		println!("{}", 
				String::from_utf8(value.to_vec()).unwrap()
		);
		// OUTPUT:
		// rw
}

使用TwoIter

use cluproccmdline::Cmdline;

let mut cmdline = cluproccmdline::array_slice(b"test=all rw");
for (value, name) in cmdline.iter_two() {
		println!("{} {}", 
				String::from_utf8(name.to_vec()).unwrap(),
				String::from_utf8(value.to_vec()).unwrap()
		);
		// OUTPUT: 
		// test all
}

哈希proc cmdline

use cluproccmdline::Cmdline;

let mut cmdline = cluproccmdline::array_slice(b"test=all rw");
assert_eq!(cmdline.cmdline_hash(), 1877887864476248772);

基准测试

机器:Intel Core 2 Duo (2000 MHz),2 Gb DDR2

test tests::bench_oneslice_new ... bench:         101 ns/iter (+/- 14)
test tests::bench_slice_new    ... bench:         105 ns/iter (+/- 23)

许可证

版权所有 2018 #UlinProject Денис Котляров

根据Apache License,版本2.0许可

无运行时依赖