Repository navigation
v0.14.0
This is a big breaking change for the library.
- BREAKING: To support commands implemented outside the library, the
Commandenum has been renamed toTypedCommand. - BREAKING: Connections have been removed. While this sounds like a huge change, the connections were thin wrappers around the underlying transports.
- BREAKING: The commands have been renamed to better reflect their usage.
- BREAKING: Nearly all calls to
panic!,.unwrap()and.expect()have been removed and signatures changed to reflect that. Apart from out-of-bounds accesses on the containers, the library will not crash your app anymore. - BREAKING: The
BitVectype alias has been renamed toDisplayBitVecbecause of an issue in cbindgen that affectedservicepoint_binding_c. - FEATURE: Add
UdpSocketExtto easily use aUdpSocketin a way similar to the old connections. - FEATURE:
Commandis now a new trait that gets auto-implemented if the required supertraits are. - FEATURE: Each command is now a struct with public fields. This means a command can be mutated and functions can declare specific types in their signatures.
- FEATURE: Containers like
CharGridandBitmaphave gotten newTryIntoimplementations for their command struct. That means to send a bitmap to the top left of the screen with default compression, you can writeBitmapCommand::from(bitmap). - FEATURE: Some structs and enum values have been annotated with a
reprattribute to make them usable in language bindings.
Migration Guide
- Some functions now return
NoneorErrwhen called improperly. To keep the old behavior, add an.expect()or.unwrap(). - Replace usages of
servicepoint::BitVecwithservicepoint::DisplayBitVec.
Connection
Connection::Fakecan be replaced byFakeConnection- though the usefulness of that decreased.Connection::Websocketdoes not have an equivalent anymore. You should use tungstenite directly by first turning the command into a packet and then the packet into aVec<u8>.- Instead of
Connection::openuseUdpSocket::bind_connectafter addingUdpSocketExtto the imports. - Instead of calling
socket.send(command), usesocket.send_command(command).
Command names
| v0.13 | v0.14 |
|---|---|
| Command::Clear | ClearCommand |
| Command::Utf8Data | CharGridCommand |
| Command::Brightness | GlobalBrightnessCommand |
| Command::BitmapLinearWin | BitmapCommand |
| Command::Cp437Data | Cp437GridCommand |
| Command::CharBrightness | BrightnessGridCommand |
| Command::HardReset | HardResetCommand |
| Command::FadeOut | FadeOutCommand |
| Command::BitmapLegacy | BitmapLegacyCommand |
| Command::BitmapLinear | BitVecCommand { operation: Overwrite } |
| Command::BitmapLinearAnd | BitVecCommand { operation: And } |
| Command::BitmapLinearOr | BitVecCommand { operation: Or } |
| Command::BitmapLinearXor | BitVecCommand { operation: Xor } |
Known issues
- The examples use
UdpSocket::bindinstead ofbind_connect, which makes them crash at runtime because the system call fails. This is fixed in v0.14.1