rs-bag 0.1.2

Read, write and modify ROS 2 rosbag2 sqlite3 (.db3) storage files
# rs-bag

## Description

A library to read, write and modify [ROS 2](https://www.ros.org/)
[rosbag2](https://github.com/ros2/rosbag2) storage files (sqlite3 `.db3`),
implemented in pure Rust on top of the [turso](https://github.com/tursodatabase/turso)
SQLite engine — no ROS installation required.

### Features

- Open an existing rosbag directory or create a new one (optionally
  split into multiple `.db3` files)
- Read messages as raw CDR bytes (`RawReadIterator`) or deserialize them
  directly into any `serde` type (`TypedReadIterator<T>`)
- Filter reads by topic names and/or a timestamp interval
- Insert new messages serialized via `serde` + CDR
- Access the bag's topics and metadata

Message **modification** and full **metadata support** are not
implemented yet — see the TODOs below.

### Current state

This crate is in an early stage (pre-1.0). The read path works for
single-file and split bags, but some APIs are still unimplemented stubs
(that will panic) and split-bag opening assumes a single `.db3` per bag.

## TODOs

- [x] Opening an existing rosbag
- [x] Reading messages
  - [x] Based on a topic name
  - [x] Based on an interval
  - [x] RawReadIterator
  - [x] TypedReadIterator
  - [x] Get index (Hashmap of timestamps per topic)
  - [x] Get topics per db3 file
  - [x] Unify topics with each db3 file's topic_id

- [ ] Metadata File
  - [ ] Read existing metadata
  - [ ] Create metadata for rosbag

- [x] Writing messages
  - [x] Insert messages
  - [x] Push/Pop Operations
  - [x] Use ReadIterator for Pop Operations
  - [x] Add and remove topics

- [ ] Modify messages
  - [ ] Create mutable message type
  - [ ] Reuse functions of Reader and make Message mutable