File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -5,6 +5,6 @@ edition = "2021"
55
66[dependencies ]
77chrono = " 0.4.40"
8- rand = " 0.9.0"
9- serde = { version = " 1.0.219" , features = [" derive" ] }
8+ # rand = "0.9.0"
9+ # serde = { version = "1.0.219", features = ["derive"] }
1010sysinfo = " 0.33.1"
Original file line number Diff line number Diff line change @@ -36,7 +36,6 @@ fn main() {
3636 let mut cpu_usages = Vec :: new ( ) ;
3737
3838 // Sürekli metrik çekeceğimiz için bir sonsuz döngü işimizi görebilir
39- //TODO@buraksenyurt loop gibi sonsuz döngü yerine komut satırı argümanları ile çalıştıralım
4039 /*
4140 cargo run -- 100 2 cpu json
4241 (2 saniyede bir CPU kullanımlarından toplam 100 tane log çek ve json formatında yaz)
@@ -59,14 +58,16 @@ fn main() {
5958 /*
6059 Plan :
6160
62- CPU kullanım değeri %50 ile %75 arasında olanlar için log seviye HEAT
63- CPU kullanım değeri %70 ile %90 arasında olanlar için log seviye BURN
61+ CPU kullanım değeri %0 ile %50 arasında olanlar için log seviyesi NORMAL
62+ CPU kullanım değeri %50 ile %75 arasında olanlar için log seviye WARM
63+ CPU kullanım değeri %70 ile %90 arasında olanlar için log seviye BURNING
6464 CPU kullanım değeri %90 üstü olanlar için log seviye ALARM
65- diğer CPU kullanım değerleri için log seviye NORMAL
65+ diğer CPU kullanım değerleri için log seviye UNKNOWN
6666
6767 Bu planı uygulamak için pattern matchin'i aşağıdaki gibi kullandık
6868
6969 */
70+
7071 for ( idx, cpu) in system. cpus ( ) . iter ( ) . enumerate ( ) {
7172 // print!(" {} {:2.2}%", idx, cpu.cpu_usage());
7273 let description = format ! ( "{} ({:2.2}%)" , idx, cpu. cpu_usage( ) ) ;
Original file line number Diff line number Diff line change 1+ pub fn run ( ) {
2+ // message isimli değişken String türünden. (Heap üzerinde allocation söz konusu)
3+ let message = String :: from ( "Houston! We have a problem" ) ;
4+ do_something ( message) ; // Burada message değişkenin sahipliği (ownership) do_something metoduna geçer
5+ // Uyarı! Hatayı görmek için aşağıdaki satırı etkinleştirelim
6+ // println!("{}", message); // do_something içerisinde drop edilmiş olan bellek bölgesini message işaret etmeye devam edebilir
7+ // message değişkenin sahipliği do_something'e geçtiği için value borrowed here after move hatası alınır
8+ }
9+
10+ fn do_something ( input : String ) {
11+ println ! ( "Incoming message; '{}'" , input) ;
12+ // Bir değişkenin ömrü tanımlandığı scope sonlanınca biter(default)
13+ // do_something fonksiyonundan çıkılırken input değişkeni bellekten düşürülür(drop)
14+ }
Original file line number Diff line number Diff line change 1+ pub fn run ( ) {
2+ let message = "Houston! We have a problem" ;
3+ do_something ( message) ; // Burada fonksiyon veri değil de veriyi referans eden değişken taşınır
4+ println ! ( "{}" , message) ;
5+ }
6+
7+ fn do_something ( input : & str ) {
8+ println ! ( "Incoming message; '{}'" , input) ;
9+ }
Original file line number Diff line number Diff line change 1+ pub fn run ( ) {
2+ let message = String :: from ( "Houston! We have a problem" ) ;
3+ do_something ( & message) ; // & sebebiyle verinin kendisini değil referansını gönderiyoruz
4+ println ! ( "{}" , message) ;
5+ }
6+
7+ fn do_something ( input : & String ) {
8+ println ! ( "Incoming message; '{}'" , input) ;
9+ } // scope sonu, sadece kopylanan referans düşer, run fonksiyonundaki orjinal veri yaşamaya devam eder
Original file line number Diff line number Diff line change 1+ pub fn run ( ) {
2+ let average = 3.14 ; // f64 stack bazlı bir primitive type.
3+ calculate ( average) ; // Burada sahiplik el değiştirirken verinin kopyalanarak taşınması söz konusudur
4+ println ! ( "Average value : {}" , average) ; // Bu nedenle dönüşte average kullanılmaya devam eder
5+ // Dolayısıyla burada Value used after being moved [E0382] hatası söz konusu olmaz
6+ }
7+
8+ fn calculate ( input : f64 ) {
9+ println ! ( "Incoming message; '{}'" , input) ;
10+ }
Original file line number Diff line number Diff line change 1+ /*
2+ Scope, Ownership, Borrowing, Lifetimes
3+ Resource Acquisition is Intialization (RAII)
4+ */
5+ mod case_00;
6+ mod case_01;
7+ mod case_02;
8+ mod case_03;
9+
110fn main ( ) {
2- println ! ( "Hello, world!" ) ;
11+ // case_00::run(); // value borrowed here after move hatası
12+ // case_01::run(); // &str kullanımı sebebiyle case 00'daki ihlal oluşmaz
13+ // case_02::run();
14+ case_03:: run ( ) ;
315}
Original file line number Diff line number Diff line change @@ -4,6 +4,8 @@ use std::env;
44pub fn parse ( ) -> Result < Command , String > {
55 let args: Vec < String > = env:: args ( ) . collect ( ) ;
66 // println!("{:?}", args);
7+
8+ // early return
79 if args. len ( ) < 2 {
810 return Err ( "Wrong number of arguments" . to_string ( ) ) ;
911 }
Original file line number Diff line number Diff line change @@ -19,6 +19,7 @@ pub fn print_cpu(system: &mut System) {
1919}
2020
2121pub fn show_usages ( ) {
22+ //todo@buraksenyurt json veya xml formatta çıktı işlevi ekleyelim
2223 println ! (
2324 r"
2425 A tiny system metrics collector about
@@ -29,10 +30,12 @@ pub fn show_usages() {
2930 kind : cpu or mem
3031 count : Number of total metric
3132 period : Number of periodic metric in seconds
33+ format : Output format (json / xml)
3234
3335 Usages :
3436
35- -k cpu -c 100 -p 2 (Get cpu usage every 2 seconds for 100 times)
37+ kind cpu count 100 period 2 format json
38+ (Get cpu usage every 2 seconds for 100 times and save all into json/xml file)
3639 "
3740 ) ;
3841}
You can’t perform that action at this time.
0 commit comments