The PlayOnBSD database is a human readable database listing commercial games that can be played on OpenBSD.
The libpobsd provides a Parser
to parse the PlayOnBSD database and a GameDataBase
to
query the PlayOnBSD database.
Loading the games (represented by the Game
struct) from the database:
rust
use libpobsd::{Parser, ParserResult};
let games = match Parser::default()
.load_from_file("openbsd-games.db")
.expect("Failed to load database") {
ParserResult::WithoutError(games) => games,
ParserResult::WithError(games, _) => games,
};
Loading the games into the GameDataBase
:
rust
use libpobsd::{Parser, ParserResult, GameDataBase};
let games = match Parser::default()
.load_from_file("openbsd-games.db")
.expect("Failed to load database") {
ParserResult::WithoutError(games) => games,
ParserResult::WithError(games, _) => games,
};
let db = GameDataBase::new(games);
Search games by name:
rust
use libpobsd::{Parser, ParserResult, GameDataBase};
let games = match Parser::default()
.load_from_file("openbsd-games.db")
.expect("Failed to load database") {
ParserResult::WithoutError(games) => games,
ParserResult::WithError(games, _) => games,
};
let db = GameDataBase::new(games);
let games = db.search_game_by_name("Barrow");
Filter a query result (represented by the QueryResult
struct)
by year:
rust
use libpobsd::{Parser, ParserResult, GameDataBase};
let games = match Parser::default()
.load_from_file("openbsd-games.db")
.expect("Failed to load database") {
ParserResult::WithoutError(games) => games,
ParserResult::WithError(games, _) => games,
};
let db = GameDataBase::new(games);
let games = db.search_game_by_name("Barrow");
let games = games.get_game_by_year("2018");
List the games of a query result:
rust
use libpobsd::{Parser, ParserResult, GameDataBase};
let games = match Parser::default()
.load_from_file("openbsd-games.db")
.expect("Failed to load database") {
ParserResult::WithoutError(games) => games,
ParserResult::WithError(games, _) => games,
};
let db = GameDataBase::new(games);
let games = db.search_game_by_name("Barrow");
for game in games.into_inner() {
println!("Game: {}", game.name);
}
More examples are available in the documentation of each module.