ក្នុងអត្ថបទនេះយើងនឹងអនុវត្តអ៊ីនធឺណិតបន្ទាត់បញ្ជាបញ្ជាដែលនឹងទទួលបានឯកសារ markdown ដូចជាអនធឺណិតបន្ទាត់បញ្ជាបញ្ជា, អានសម្ភារៈរបស់វា, និងបោះពុម្ពសម្ភារៈទាំងអស់នៃឯកសារនៅក្នុងចនាសម្ព័ន្ធ។ បន្ទាប់ពីធ្វើដូច្នេះយើងនឹងមានដំណើរការល្អក្នុងការចាប់ផ្តើមការអនុវត្តការកំណត់សៀវភៅមូលដ្ឋាន, សៀវភៅ, សៀវភៅ, និងដូច្នេះទៀត។ ខ្ញុំនឹងពិនិត្យឡើងវិញកូដទាំងអស់យ៉ាងទូលំទូលាយហើយនៅចុងក្រោយខ្ញុំនឹងផ្តល់ឱ្យអ្នកនូវកូដទាំងអស់ដូច្នេះអ្នកអាចធ្វើការដោយគ្មានបញ្ហាណាមួយ។ ម៉ូឌុលដែលត្រូវការ មានម៉ូឌុលពីរដែលយើងត្រូវប្រើ: - we need module for interacting with the environment the program is currently running in. Now, we use it here to access the command-line arguments passed to our program. std::env env - we need for file operations like reading from and writing to files. std::fs fs use std::env; use std::fs; ទាញយកឯកសារ Markdown ពីបន្ទាត់បញ្ជាបញ្ជា។ បន្ទាប់ពីទទួលបានម៉ូឌុលដែលត្រូវការយើងអាចចាប់ផ្តើមធ្វើការដើម្បីទទួលបានឯកសារ markdown ពីអនុម័តបន្ទាត់បញ្ជាការបញ្ជា។ ចាប់តាំងពីឥឡូវនេះយើងនឹងសរសេរលេខកូដគ្រប់បន្ទាត់ក្នុងបំណងសំខាន់។ let args: Vec<String> = env::args().collect(); សូមអរគុណចំពោះអ្វីដែលបន្ទាត់នេះធ្វើ។ env::args() - វាត្រូវបានផ្ដល់ឱ្យកម្មវិធីនេះជាការរចនាសម្ព័ន្ធមួយនៃអនុម័តដែលបានផ្តល់ជូននៅក្នុងបន្ទាត់គោលបំណង។ collect() - បន្ទាប់មកយើងប្រើវិធី collect() ដើម្បីប្រើ iterator និងរុករកអត្ថបទទាំងអស់ពី iterator នេះទៅក្នុងក្រុមប្រឹក្សា. Vec<String> - ដើម្បីរក្សាទុកទាំងអស់នៃអត្ថបទពី iterator យើងកំពុងប្រើសម្រាប់ក្រុមហ៊ុន Vector ដែលរក្សាទុកអត្ថបទនៃប្រភេទ String ។ យើងបានផ្តល់ឈ្មោះផ្លាស់ប្តូរនៃ Vec<String> នេះជា args ។ ដូច្នេះ args នេះកំពុងរក្សាទុកអត្ថបទទាំងអស់ពី iterator ប្រព័ន្ធបញ្ជាការបញ្ជាការបញ្ជា។ ឥឡូវនេះ, សូមដោះស្រាយប្រសិនបើអ្នកប្រើប្រាស់ឬគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរឱ្យគួរ if args.len() < 2 { println!("Please provide a markdown file"); return; } នៅទីនេះយើងបាននិយាយថាប្រសិនបើចំនួននៃការបញ្ជាក់គឺតិចជាង 2, បន្ទាប់មកបោះពុម្ពការបញ្ជាក់ដែលសួរអ្នកប្រើដើម្បីផ្តល់ឯកសារ markdown ហើយបន្ទាប់មកមកមកពីកម្មវិធី។ [!គោលបំណង] ទំហំ មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រ [!គោលបំណង] ទំហំ មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រា មាត្រ ការអានឯកសារ និងបោះពុម្ពសម្ភារៈរបស់វា។ ឥឡូវនេះ, សូមរក្សាទុកឈ្មោះឯកសារដែលយើងបានទទួលបានពីអធិប្បាយបន្ទាត់គោលដៅ។ let filename = &args[1]; យើងបានបង្កើត variable មួយ និងការផ្ទុកឈ្មោះឯកសារពីតំណភ្ជាប់បន្ទាត់បញ្ជាទីពីរ។ filename ឥឡូវនេះ, សូមចាប់ផ្តើមអានសម្ភារៈធម្មតានៃឯកសារនិងបោះពុម្ពសម្ភារៈទាំងអស់ដូចជាវា។ println!("Attempting to read file: {}", filename); let content = fs::read_to_string(filename).expect("Something went wrong reading the file"); println!("File content:\n{}", content); ជាលើកដំបូង, យើងគ្រាន់តែបោះពុម្ពសេចក្តីអធិប្បាយដើម្បីដឹងថាយើងកំពុងព្យាយាមដើម្បីអានឯកសារនេះ។ fs::read_to_string(filename) - សម្ភារៈនេះមកពីម៉ូឌុល fs ដែលបានអានសម្ភារៈទាំងអស់នៃឯកសារដែលបានបង្ហាញដោយឈ្មោះឯកសារ។ បន្ទាប់មកយើងបានរក្សាទុកសម្ភារៈទាំងអស់នៅក្នុងការផ្លាស់ប្តូរសម្ភារៈនិងបញ្ចប់ការបោះពុម្ពសម្ភារៈទាំងអស់នៅលើ console ។ មុនពេលនិយាយអំពី ប្រព័ន្ធ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ expect() នៅលើ លទ្ធផល លទ្ធផល នៅលើ Rust, របៀបដែលយើងដំណើរការប្រតិបត្តិការដែលអាចជោគជ័យគឺដោយប្រើ ប្រភេទ: វាគឺជា enum ដែលមានពីរប្រភេទ: Result enum Result<T, E> { Ok(T), // Success - contains the value of type T Err(E), // Error - contains the error of type E } ឥឡូវនេះ, សូមចូលទៅក្នុងការ ប្រសិនបើអ្នកមើលនៅក្នុងឧបករណ៍នេះ, វាត្រូវបានបង្ហាញថា ប្រព័ន្ធ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រព័ន្ធ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រភេទ fs::read_to_string() Result String std::io::Error ឥឡូវនេះ, សូមភ្ជាប់វាជាមួយនឹង គោលដៅ expect() នេះ គោលបំណងនេះគឺជាគោលបំណងដែលបាននិយាយថា: expect() ប្រសិនបើ fs::read_to_string() ធ្វើការយ៉ាងល្អហើយធ្វើឱ្យប្រសើរឡើង OK(string), បន្ទាប់មកធ្វើឱ្យប្រសើរឡើងតម្លៃ string ។ ប្រសិនបើ fs::read_to_string() មិនធ្វើការ, បន្ទាប់មកកាត់បន្ថយកម្មវិធីជាមួយនឹងសេចក្តីអស្ចារ្យដែលបានកំណត់ដោយខ្លួនឯង។ ការធ្វើតេស្តកម្មវិធី សម្រាប់ការធ្វើតេស្ត, សូមបង្កើត a វាត្រូវបានគេហទំព័ររបស់គម្រោងនេះនិងបានបង្ហាញពីការបញ្ចូលគ្នានៃការបញ្ចូលគ្នានៃការបញ្ចូលគ្នានៃការបញ្ចូលគ្នានៃការបញ្ចូល។ test.md # this is a header - this is a list this is a normal text ឥឡូវនេះបើកចំហបញ្ចប់របស់អ្នកពីដំណាក់កាលគម្រោងរបស់អ្នកនិងចុចជម្រើស: cargo run -- test.md វាត្រូវបានបង្កើតឡើងនិងដំណើរការកូដនិងផ្តល់ឱ្យអ្នកនូវដំណោះស្រាយដូចខាងក្រោម។ ការបោះពុម្ពនេះបង្ហាញថាយើងអាចទទួលបានសម្ភារៈនៃឯកសារ markdown និងបោះពុម្ពទិន្នន័យដំបូងរបស់វា។ នៅក្នុងការបោះពុម្ពបន្ទាប់យើងនឹងចាប់ផ្តើមរៀនអំពីការបោះពុម្ព។ ប្រព័ន្ធ ប្រតិបត្តិការ Full Source Code use std::env; use std::fs; fn main() { let args: Vec<String> = env::args().collect(); if args.len() < 2 { println!("Please provide a markdown file"); return; } let filename = &args[1]; println!("Attempting to read file: {}", filename); let content = fs::read_to_string(filename).expect("Something went wrong reading the file"); println!("File content:\n{}", content); } លទ្ធផល ក្នុងអត្ថបទនេះយើងបានដឹងអំពីរបៀបធ្វើការជាមួយបន្ទាត់បញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជា នៅពេលដែលយើងដឹងថាមានអ្វីដែលអាចធ្វើបានប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រ Result ឥឡូវនេះយើងដឹងអំពីការអាននិងបោះពុម្ពសម្ភារៈឯកសារ markdown ទាំងអស់។ ចាប់តាំងពីប្រកាសបន្ទាប់មកយើងនឹងអនុវត្តកំណត់ហេតុបណ្ដាញដំណោះស្រាយដំណោះស្រាយដំណោះស្រាយដំណោះស្រាយដំណោះស្រាយដំណោះស្រាយដំណោះស្រាយដំណោះស្រាយដំណោះស្រាយដំណោះស្រាយដំណោះស្រាយដំណោះស្រាយដំណោះស្រាយដំណោះស្រាយដំណោះស្រាយដំណោះស្រាយដំណោះស្រាយដំណោះស្រាយដំណោះស្រាយដំណោះស្រាយដំណោះស្រាយដំណោះស្រាយដំណោះស្រាយដំណោះស្រាយដំណោះស្រាយដំណោះស្រាយដំណោះស្រាយដំណោះស្រាយដំណោះស្រាយដំណោះស្រាយដ