PuzzleFsCache

Struct PuzzleFsCache 

Source
pub struct PuzzleFsCache { /* private fields */ }
Expand description

A file system backed implementation of PuzzleCache.

Cached puzzle data is grouped together by day and year into a directory. The cache layout follows this general pattern:

<cache_dir>/y//input.encrypted.txt /part-1-answers.txt /part-2-answers.txt

cache_dir is specified when PuzzleFsCache::new(...) is called. year is four digit puzzle year. day is the puzzle day with no leading zeroes, and starting from index one.

Encryption: If a passphrase is configured, inputs are automatically encrypted when saved and decrypted when loaded. The .encrypted.txt suffix indicates an encrypted file. Unencrypted input files use the .txt extension.

Implementations§

Source§

impl PuzzleFsCache

Source

pub fn new<P: Into<PathBuf>, S: Into<String>>( cache_dir: P, passphrase: Option<S>, ) -> Self

Creates a new PuzzleFsCache that reads/writes cache data stored in cache_dir. Inputs are are encrypted on disk using the provided passphrase.

Source

pub fn dir_for_puzzle(cache_dir: &Path, day: Day, year: Year) -> PathBuf

Get the directory path for a puzzle day and year.

Source

pub fn input_file_path( cache_dir: &Path, day: Day, year: Year, encrypted: bool, ) -> PathBuf

Returns the file path for puzzle input, with the appropriate extension based on encryption status.

Source

pub fn answers_file_path( cache_dir: &Path, part: Part, day: Day, year: Year, ) -> PathBuf

Returns the file path for answers of a given part.

Trait Implementations§

Source§

impl Debug for PuzzleFsCache

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PuzzleCache for PuzzleFsCache

Source§

fn load_input(&self, day: Day, year: Year) -> Result<Option<String>, CacheError>

Load input for the given day and year. Returns the decrypted input if cached, or Ok(None) if no cache entry exists.
Source§

fn load_answers( &self, part: Part, day: Day, year: Year, ) -> Result<Option<Answers>, CacheError>

Load answers for the given part, day and year. Returns Ok(None) if no cache entry exists.
Source§

fn save(&self, puzzle: Puzzle) -> Result<(), CacheError>

Save a puzzle’s input and answers for both parts to the cache.
Source§

fn save_input( &self, input: &str, day: Day, year: Year, ) -> Result<(), CacheError>

Save input for the given day and year. The input is encrypted before being written to disk if a passphrase is provided. Any previously saved input for this day and year will be overwritten.
Source§

fn save_answers( &self, answers: &Answers, part: Part, day: Day, year: Year, ) -> Result<(), CacheError>

Save answers for the given part, day and year. Any previously saved answers for this day and year will be overwritten.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,