Skip to main content

JsonStorage

Struct JsonStorage 

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

JSON file-based storage implementation

Implementations§

Source§

impl JsonStorage

Source

pub fn new() -> Result<Self>

Creates a new JsonStorage pointing to the default OS data directory.

The data directory is created automatically if it does not exist.

§Errors

Returns an error if the OS data directory cannot be determined or if the directory cannot be created.

Trait Implementations§

Source§

impl Storage for JsonStorage

Source§

fn load(&self) -> Result<Vec<Task>>

Loads tasks from the JSON file.

Automatically migrates tasks without UUIDs by generating and saving them.

Returns an empty list if the file does not exist yet.

Source§

fn save(&self, tasks: &[Task]) -> Result<()>

Persists tasks atomically using a write-rename strategy.

Acquires an exclusive lock on todos.json.lock before writing, ensuring concurrent processes do not corrupt the file. The lock is released automatically when the function returns.

Source§

fn location(&self) -> String

Returns a human-readable description of the storage location. Read more

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, 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, 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.