# Nonblocking serial I/O
`SerialIo` provides `try_read` and `try_write` over caller-owned byte slices.
Calls do one bounded attempt without waiting, locking or allocating. Zero means
no progress; disconnected devices report an error. Writes may accept a prefix,
whose length is returned. Implementations must return a count within the slice.
`ReadySerial<S>` adapts embedded-io `Read + Write + ReadReady + WriteReady` HALs.
It tests readiness and makes at most one read/write call, preserving the HAL's
nonblocking guarantee. HALs with DMA or different APIs can implement `SerialIo`
directly. Linux bundles can export `LinuxNonblockingSerialPort` using the explicit
`serialN_nonblocking` RON setting.