[package]
name = "connect"
-version = "0.0.8"
+version = "0.1.0"
edition = "2018"
authors = ["Sachandhan Ganesh <sachan.ganesh@gmail.com>"]
description = "message queue abstraction over async network streams"
[docs-badge]: https://docs.rs/connect/badge.svg
[docs-url]: https://docs.rs/connect
-This Rust crate provides a reliable, fault-tolerant, and brokerless message-queue abstraction over
-asynchronous network streams.
+This Rust crate provides a simple brokerless message-queue abstraction over asynchronous network
+streams.
## Why?
When building networked applications, developers shouldn't have to focus on repeatedly solving
queue abstraction, crate users can focus on core application logic and leave the low-level
networking and message-queue guarantees to the abstraction.
+## Examples
+Please use the [examples](https://github.com/sachanganesh/connect-rs/tree/main/examples)
+provided to help understand crate usage.
+
## Protobuf
This crate relies on the use of [Protocol Buffers](https://developers.google.com/protocol-buffers)
due to it being widely adopted and industry-proven. All messages are Protobuf messages that
decide what Protobuf message type it is, and correspondingly unpack the `Any` into a particular
message type.
-## Examples
-Please use the [examples](https://github.com/sachanganesh/connect-rs/tree/main/examples)
-provided to help understand crate usage.
-
+Protobuf was chosen when the library hit a roadblock with Rust's `TypeId` potentially not being
+consistent between Rust compiler versions. The crate requires a consistent way to determine what
+type of message is received, so it can appropriately deserialize the message from network bytes.
+Until the Rust ecosystem around reflection improves, the crate will use Protobuf to fill the
+void.
## Feature Status
-//! This crate provides a reliable, fault-tolerant, and brokerless message-queue abstraction over
-//! asynchronous network streams.
+//! This crate provides a simple brokerless message-queue abstraction over asynchronous network
+//! streams.
//!
//! # Why?
//! When building networked applications, developers shouldn't have to focus on repeatedly solving
//! queue abstraction, crate users can focus on core application logic and leave the low-level
//! networking and message-queue guarantees to the abstraction.
//!
+//! # Examples
+//! Please use the [examples](https://github.com/sachanganesh/connect-rs/tree/main/examples)
+//! provided to help understand crate usage.
+//!
//! # Protobuf
//! This crate relies on the use of [Protocol Buffers](https://developers.google.com/protocol-buffers)
//! due to it being widely adopted and industry-proven. All messages are Protobuf messages that
//! decide what Protobuf message type it is, and correspondingly unpack the `Any` into a particular
//! message type.
//!
-//! # Examples
-//! Please use the [examples](https://github.com/sachanganesh/connect-rs/tree/main/examples)
-//! provided to help understand crate usage.
+//! Protobuf was chosen when the library hit a roadblock with Rust's `TypeId` potentially not being
+//! consistent between Rust compiler versions. The crate requires a consistent way to determine what
+//! type of message is received, so it can appropriately deserialize the message from network bytes.
+//! Until the Rust ecosystem around reflection improves, the crate will use Protobuf to fill the
+//! void.
mod reader;
pub(crate) mod schema;