這次搬運的庫是很多資料分析師、資料科學家、以及金融分析師常用的csv檔案庫。
用rust實現的乙個高效能、靈活的csv讀寫器,支援serde.
將以下配置加進你的cargo.toml
:
[dependencies]
csv = "1.1"
簡單示範如何從stdin讀取csv資料並通過stdout將每一條記錄列印出來。
use std::error::error;
use std::io;
use std::process;
fn example() -> result<(), box> ", record);
}ok(())
}fn main() ", err);
process::exit(1);
}}
以上的例子可以用以下命令執行:
$ git clone git:
$ cd rust-csv
$ cargo run --example cookbook-read-basic < examples/data/smallpop.csv
示範如何從stdin讀取csv資料並且將資料對映到定製結構體。結構體中的成員名稱會預設與csv資料中的表頭相對應。
use std::error::error;
use std::io;
use std::process;
use serde::deserialize;
#[derive(debug, deserialize)]
struct record
fn example() -> result<(), box> ", record);
}ok(())
}fn main() ", err);
process::exit(1);
}}
以上的例子可以用以下命令執行:
$ git clone git:
$ cd rust-csv
$ cargo run --example cookbook-read-serde < examples/data/smallpop.csv
extern crate csv;
use std::error::error;
use std::io;
use std::process;
fn example() -> result<(), box>
fn main() ", err);
process::exit(1);
}}
以上的例子可以用以下命令執行:
$ git clone git:
$ cd rust-csv
$ cargo run --example cookbook-write-basic > /tmp/******pop.csv
extern crate csv;
#[macro_use]
extern crate serde_derive;
use std::error::error;
use std::io;
use std::process;
#[derive(debug, serialize)]
struct record
fn example() -> result<(), box> )?;
wtr.serialize(record )?;
wtr.flush()?;
ok(())
}fn main() ", err);
process::exit(1);
}}
以上的例子可以用以下命令執行:
$ git clone git:
$ cd rust-csv
$ cargo run --example cookbook-write-serde > /tmp/******pop.csv
extern crate csv;
use std::env;
use std::error::error;
use std::io;
use std::process;
fn run() -> result<(), box> ;
// 通過stdin建立csv讀取器
// 通過stdout建立csv寫入器
let mut rdr = csv::reader::from_reader(io::stdin());
let mut wtr = csv::writer::from_writer(io::stdout());
// 在讀取資料記錄之前,先寫入表頭記錄
wtr.write_record(rdr.headers()?)?;
// 通過rdr遍歷所有記錄,然後通過wre寫入只含有「query」的記錄
for result in rdr.records()
}// csv寫入器使用內部緩衝器,要記得完成後重新整理清空。
wtr.flush()?;
ok(())
}fn main() ", err);
process::exit(1);
}}
在編譯之後,執行這段**時加入ma
作為查詢語句,可以看到結果中只有一條記錄復合查詢條件:
$ cargo build
$ ./csvtutor ma < uspop.csv
city,state,population,latitude,longitude
reading,ma,23441,42.5255556,-71.0958333
本文**於 cookbook. Rust每週一知 Rust中的讀寫鎖RwLock
本文簡單介紹 rust 中的讀寫鎖rwlock,內容概覽如下 基本概念 rust中的rwlock實現 在電腦科學中,有一些經典的同步問題,讀者 作家問題就是其中乙個,該問題涉及多個併發執行緒試圖同時訪問同一共享資源的情況。讀者 作家問題 我們擁有一種資源 例如,資料庫 可以由不修改資源的讀者和可以修...
Rust每週一庫 hyper 底層http庫
現在說到寫應用,網路框架肯定是必不可少的。今天就給大家簡單介紹一下hyper。hyper是乙個偏底層的http庫,支援http 1和http 2,支援非同步rust,並且同時提供了服務端和客戶端的api支援。很多同學可能覺得既然hyper是個偏底層的框架,那是不是就不需要去了解了呢?首先很多上層的框...
Rust每週一庫 failure 錯誤處理庫
錯誤處理在生產級別的 中一直都是乙個重點。在原型階段,愉快地使用unwrap可以確保思路和精力被集中用在業務邏輯開發上。不過對於最終要上線的 優雅的處理錯誤卻是至關重要的。原生rust錯誤處理的工具有std error error 一般我們會看到box的形式 操作符以及enum供我們自定義錯誤型別。...