Elszegődtél egy helyi könyvtárba, hogy segíts rendezni a régi könyvek gyűjteményét. A diák olvasók gyakran homályosan felidézett idézeteket keresnek, hogy hivatkozhassanak rájuk a szemináriumi dolgozataikban. Ahelyett, hogy minden könyvet kézzel olvasnál el elölről a végéig, úgy döntesz, építesz egy kis eszközt, amely átfésüli a könyveket, és megkeresi ezeket a töredékes idézeteket.
Keresd meg a fájlokban azokat a sorokat, amelyek illeszkednek egy keresési stringre, és add vissza az összes egyező sort.
A Unix grep parancs a fájlokban olyan sorokat keres, amelyek illeszkednek egy reguláris kifejezésre.
A feladatod egy egyszerűsített grep parancs megvalósítása, amely rögzített stringek keresését támogatja.
A grep parancs három argumentumot kap:
Ezután beolvassa a megadott fájlok tartalmát (a megadott sorrendben), megkeresi azokat a sorokat, amelyek tartalmazzák a keresési stringet, és végül visszaadja ezeket a sorokat abban a sorrendben, ahogy megtalálta őket. Ha több fájlban keresel, minden egyező sor elé a fájl neve és egy kettőspont (':') kerül.
A grep parancs a következő kapcsolókat támogatja:
-n A kimenet minden sora elé írd oda a sorszámot és egy kettőspontot (':'); a számot a fájlnév után helyezd el (ha van).-l Csak azon fájlok nevét írd ki, amelyek legalább egy egyező sort tartalmaznak.-i Kis-nagybetűre érzéketlen összehasonlítással keress.-v Fordítsd meg a program működését, és gyűjtsd össze az összes olyan sort, amely nem egyezik.-x Csak azokra a sorokra keress, ahol a keresési string a teljes sorral egyezik.Ez a feladat bemutatja az anyhow crate-et, amellyel könnyedén kezelhetsz tetszőleges hibatípusokat.
A célja az, hogy amikor alkalmazást írsz, ne kelljen azzal foglalkoznod, hogy a meghívott függvényed
éppen milyen konkrét hibákkal tér vissza, hanem egyszerűen a helyes dolgot tedd, amikor továbbadod őket.
Megjegyzés: valójában némileg nem jó gyakorlat az anyhow-t használni, amikor könyvtárat írunk, ahogy itt is
tesszük; sokkal egyértelműbb és hasznosabb a saját Error enumodat megírni, amikor könyvtárat írsz (esetleg olyan
segédmakrók segítségével, amilyeneket a thiserror crate nyújt). Itt azonban
szándékosan és kifejezetten így teszünk, hogy bemutassuk ennek a crate-nek a használatát.
Ha többet szeretnél megtudni erről a crate-ről, lapozd fel a dokumentációját.
Bár ez a feladat csak a grep legalapvetőbb funkcióinak megvalósítását kéri tőled,
valójában létezik egy projekt, amely teljesen újraimplementálja a grep-et Rustban - ripgrep.
Ha tetszett az az ötlet, hogy az alapvető segédprogramokat Rustban írjuk újra, feltétlenül nézd meg a következő projekteket:
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Rust nyelvet 99 feladat segítségével, valódi emberi mentorálással, mindez ingyen.