IOErr

:= [
    AlreadyExists,
    BrokenPipe,
    Interrupted,
    IsADirectory,
    NotFound,
    NotADirectory,
    Other(Str),
    OutOfMemory,
    PermissionDenied,
    Unsupported,
]

Represents an I/O error that can occur during platform operations.

**NotFound** - An entity was not found, often a file.

**PermissionDenied** - The operation lacked the necessary privileges to complete.

**BrokenPipe** - The operation failed because a pipe was closed.

**AlreadyExists** - An entity already exists, often a file.

**Interrupted** - This operation was interrupted. Interrupted operations can typically be retried.

**IsADirectory** - A filesystem operation expected a non-directory path.

**NotADirectory** - A filesystem operation expected a directory path.

**Unsupported** - This operation is unsupported on this platform. This means that the operation can never succeed.

**OutOfMemory** - An operation could not be completed, because it failed to allocate enough memory.

**Other** - A custom error that does not fall under any other I/O error kind.

to_str : IOErr -> Str

Convert an I/O error to a concise human-readable message.