Rustacean

Dalam kesempatan kali ini penulis pertama kali menggunakan bahasa pemrograman Rust untuk belajar, yaitu dengan menguraikan (parsing) log file. Sebelum masuk ke inti pembahasan, alasan penulis memilih belajar Rust untuk menambah tech stack adalah karena Rust merupakan bahasa pemrograman yang unik. Bahasa pemrograman ini memiliki fitur yang memory safety, yaitu dengan adanya konsep ownership dan borrowing (walaupun sebenarnya akan sering berkelahi dengan compiler karena hal ini).

bash

cargo new

rust

use std::{
    fs::{self, File},
    io::Read,
    time::Instant,
};

use serde::Deserialize;

#[derive(Debug, Deserialize)]
struct Metrics {
    // timestamp: String,
    // level_name: String,
    value: u32,
}

fn main() -> std::io::Result<()> {
    let start = Instant::now();
    let dir = fs::read_dir("D:\\Project\\log-parser\\metrics").unwrap();    

    let mut counter: u32 = 0;

    for file in dir {
        let mut content = String::new();
        File::open(file.unwrap().path())?.read_to_string(&mut content)?;

        let result: Vec<Metrics> = serde_json::from_str(&content)?;

        for item in result {
            counter += item.value;
        }
    }
    println!("{}", counter);
    let duration = start.elapsed();

    println!("time elasped: {:?}", duration);

    Ok(())
}


Untuk source code dari program yang telah dibuat dapat dilihat disini.