pub struct Encoding(/* private fields */);Expand description
§Encoding information
The Sample or ReplyError
may contain the optional encoding value, which indicates how the payload should be interpreted
by the application.
The encoding is represented as a string in MIME-like format: type/subtype[;schema].
To optimize network usage, Zenoh internally maps some predefined encoding strings to
an integer identifier. These encodings are provided as associated constants of the Encoding struct,
e.g. Encoding::ZENOH_BYTES, Encoding::APPLICATION_JSON, etc. This internal mapping
is not exposed to the application layer and, from the API point of view, the encoding is always
represented as a string. But it’s useful to know that some encodings are much more efficient
than others, especially considering that the encoding value is sent with each message.
Please note that the Zenoh protocol does not impose any encoding value, nor does it operate on it. It can be seen as optional metadata that is carried over by Zenoh in such a way that the application may perform different operations depending on the encoding value.
§Examples
§String operations
Create an Encoding from a string and vice versa.
use zenoh::bytes::Encoding;
let encoding: Encoding = "text/plain".into();
let text: String = encoding.clone().into();
assert_eq!("text/plain", &text);§Constants and cow operations
Since some encoding values are internally optimized by Zenoh, it’s generally more efficient to use
the defined constants and Cow conversion to obtain its string representation.
use zenoh::bytes::Encoding;
use std::borrow::Cow;
// This allocates
assert_eq!("text/plain", &String::from(Encoding::TEXT_PLAIN));
// This does NOT allocate
assert_eq!("text/plain", &Cow::from(Encoding::TEXT_PLAIN));§Schema
Additionally, a schema can be associated with the encoding.
The convention is to use the ; separator if an encoding is created from a string.
Alternatively, with_schema() can be used to add a schema to one of the associated constants.
use zenoh::bytes::Encoding;
let encoding1 = Encoding::from("text/plain;utf-8");
let encoding2 = Encoding::TEXT_PLAIN.with_schema("utf-8");
assert_eq!(encoding1, encoding2);
assert_eq!("text/plain;utf-8", &encoding1.to_string());
assert_eq!("text/plain;utf-8", &encoding2.to_string());Implementations§
Source§impl Encoding
impl Encoding
Sourcepub const ZENOH_BYTES: Encoding
pub const ZENOH_BYTES: Encoding
Just some bytes.
Constant alias for string: "zenoh/bytes".
This encoding assumes that the payload was created with ZBytes::from::<Vec<u8>> or similar
([u8], [u8;N], Cow<_,[u8]>) and its data can be accessed with ZBytes::to_bytes(),
no additional assumptions about data format are made.
Sourcepub const ZENOH_STRING: Encoding
pub const ZENOH_STRING: Encoding
A UTF-8 string.
Constant alias for string: "zenoh/string".
This encoding assumes that the payload was created with ZBytes::from::<String> or similar
(&str, Cow<str>) and its data can be accessed with ZBytes::try_to_string() without an error.
Sourcepub const ZENOH_SERIALIZED: Encoding
pub const ZENOH_SERIALIZED: Encoding
Zenoh serialized data.
Constant alias for string: "zenoh/serialized".
This encoding assumes that the payload was created with serialization functions provided by the zenoh-ext crate.
The schema field may contain the details of the serialization format.
Sourcepub const APPLICATION_OCTET_STREAM: Encoding
pub const APPLICATION_OCTET_STREAM: Encoding
An application-specific stream of bytes.
Constant alias for string: "application/octet-stream".
Sourcepub const TEXT_PLAIN: Encoding
pub const TEXT_PLAIN: Encoding
A textual file.
Constant alias for string: "text/plain".
Sourcepub const APPLICATION_JSON: Encoding
pub const APPLICATION_JSON: Encoding
JSON data intended to be consumed by an application.
Constant alias for string: "application/json".
Sourcepub const TEXT_JSON: Encoding
pub const TEXT_JSON: Encoding
JSON data intended to be human readable.
Constant alias for string: "text/json".
Sourcepub const APPLICATION_CDR: Encoding
pub const APPLICATION_CDR: Encoding
Common Data Representation (CDR)-encoded data.
Constant alias for string: "application/cdr".
Sourcepub const APPLICATION_CBOR: Encoding
pub const APPLICATION_CBOR: Encoding
Concise Binary Object Representation (CBOR)-encoded data.
Constant alias for string: "application/cbor".
Sourcepub const APPLICATION_YAML: Encoding
pub const APPLICATION_YAML: Encoding
YAML data intended to be consumed by an application.
Constant alias for string: "application/yaml".
Sourcepub const TEXT_YAML: Encoding
pub const TEXT_YAML: Encoding
YAML data intended to be human readable.
Constant alias for string: "text/yaml".
Sourcepub const TEXT_JSON5: Encoding
pub const TEXT_JSON5: Encoding
JSON5-encoded data that are human readable.
Constant alias for string: "text/json5".
Sourcepub const APPLICATION_PYTHON_SERIALIZED_OBJECT: Encoding
pub const APPLICATION_PYTHON_SERIALIZED_OBJECT: Encoding
A Python object serialized using pickle.
Constant alias for string: "application/python-serialized-object".
Sourcepub const APPLICATION_PROTOBUF: Encoding
pub const APPLICATION_PROTOBUF: Encoding
Application-specific protobuf-encoded data.
Constant alias for string: "application/protobuf".
Sourcepub const APPLICATION_JAVA_SERIALIZED_OBJECT: Encoding
pub const APPLICATION_JAVA_SERIALIZED_OBJECT: Encoding
A Java serialized object.
Constant alias for string: "application/java-serialized-object".
Sourcepub const APPLICATION_OPENMETRICS_TEXT: Encoding
pub const APPLICATION_OPENMETRICS_TEXT: Encoding
OpenMetrics data, commonly used by Prometheus.
Constant alias for string: "application/openmetrics-text".
Sourcepub const IMAGE_PNG: Encoding
pub const IMAGE_PNG: Encoding
A Portable Network Graphics (PNG) image.
Constant alias for string: "image/png".
Sourcepub const IMAGE_JPEG: Encoding
pub const IMAGE_JPEG: Encoding
A Joint Photographic Experts Group (JPEG) image.
Constant alias for string: "image/jpeg".
Sourcepub const IMAGE_GIF: Encoding
pub const IMAGE_GIF: Encoding
A Graphics Interchange Format (GIF) image.
Constant alias for string: "image/gif".
Sourcepub const IMAGE_WEBP: Encoding
pub const IMAGE_WEBP: Encoding
A WebP image.
Constant alias for string: "image/webp".
Sourcepub const APPLICATION_XML: Encoding
pub const APPLICATION_XML: Encoding
An XML file intended to be consumed by an application.
Constant alias for string: "application/xml".
Sourcepub const APPLICATION_X_WWW_FORM_URLENCODED: Encoding
pub const APPLICATION_X_WWW_FORM_URLENCODED: Encoding
An encoded list of tuples, each consisting of a name and a value.
Constant alias for string: "application/x-www-form-urlencoded".
Sourcepub const TEXT_XML: Encoding
pub const TEXT_XML: Encoding
An XML file that is human readable.
Constant alias for string: "text/xml".
Sourcepub const TEXT_JAVASCRIPT: Encoding
pub const TEXT_JAVASCRIPT: Encoding
A JavaScript file.
Constant alias for string: "text/javascript".
Sourcepub const TEXT_MARKDOWN: Encoding
pub const TEXT_MARKDOWN: Encoding
A Markdown file.
Constant alias for string: "text/markdown".
Sourcepub const APPLICATION_SQL: Encoding
pub const APPLICATION_SQL: Encoding
An application-specific SQL query.
Constant alias for string: "application/sql".
Sourcepub const APPLICATION_COAP_PAYLOAD: Encoding
pub const APPLICATION_COAP_PAYLOAD: Encoding
Constrained Application Protocol (CoAP) data intended for CoAP-to-HTTP and HTTP-to-CoAP proxies.
Constant alias for string: "application/coap-payload".
Sourcepub const APPLICATION_JSON_PATCH_JSON: Encoding
pub const APPLICATION_JSON_PATCH_JSON: Encoding
Defines a JSON document structure for expressing a sequence of operations to apply to a JSON document.
Constant alias for string: "application/json-patch+json".
Sourcepub const APPLICATION_JSON_SEQ: Encoding
pub const APPLICATION_JSON_SEQ: Encoding
A JSON text sequence consists of any number of JSON texts, all encoded in UTF-8.
Constant alias for string: "application/json-seq".
Sourcepub const APPLICATION_JSONPATH: Encoding
pub const APPLICATION_JSONPATH: Encoding
JSONPath defines a string syntax for selecting and extracting JSON values from within a given JSON value.
Constant alias for string: "application/jsonpath".
Sourcepub const APPLICATION_JWT: Encoding
pub const APPLICATION_JWT: Encoding
A JSON Web Token (JWT).
Constant alias for string: "application/jwt".
Sourcepub const APPLICATION_MP4: Encoding
pub const APPLICATION_MP4: Encoding
Application-specific MPEG-4-encoded data, either audio or video.
Constant alias for string: "application/mp4".
Sourcepub const APPLICATION_SOAP_XML: Encoding
pub const APPLICATION_SOAP_XML: Encoding
A SOAP 1.2 message serialized as XML 1.0.
Constant alias for string: "application/soap+xml".
Sourcepub const APPLICATION_YANG: Encoding
pub const APPLICATION_YANG: Encoding
YANG-encoded data commonly used by the Network Configuration Protocol (NETCONF).
Constant alias for string: "application/yang".
Sourcepub const AUDIO_AAC: Encoding
pub const AUDIO_AAC: Encoding
An MPEG-4 Advanced Audio Coding (AAC) media.
Constant alias for string: "audio/aac".
Sourcepub const AUDIO_FLAC: Encoding
pub const AUDIO_FLAC: Encoding
A Free Lossless Audio Codec (FLAC) media.
Constant alias for string: "audio/flac".
Sourcepub const AUDIO_MP4: Encoding
pub const AUDIO_MP4: Encoding
An audio codec defined in MPEG-1, MPEG-2, MPEG-4, or registered at the MP4 registration authority.
Constant alias for string: "audio/mp4".
Sourcepub const AUDIO_OGG: Encoding
pub const AUDIO_OGG: Encoding
An Ogg-encapsulated audio stream.
Constant alias for string: "audio/ogg".
Sourcepub const AUDIO_VORBIS: Encoding
pub const AUDIO_VORBIS: Encoding
A Vorbis-encoded audio stream.
Constant alias for string: "audio/vorbis".
Sourcepub const VIDEO_H261: Encoding
pub const VIDEO_H261: Encoding
An h261-encoded video stream.
Constant alias for string: "video/h261".
Sourcepub const VIDEO_H263: Encoding
pub const VIDEO_H263: Encoding
An h263-encoded video stream.
Constant alias for string: "video/h263".
Sourcepub const VIDEO_H264: Encoding
pub const VIDEO_H264: Encoding
An h264-encoded video stream.
Constant alias for string: "video/h264".
Sourcepub const VIDEO_H265: Encoding
pub const VIDEO_H265: Encoding
An h265-encoded video stream.
Constant alias for string: "video/h265".
Sourcepub const VIDEO_H266: Encoding
pub const VIDEO_H266: Encoding
An h266-encoded video stream.
Constant alias for string: "video/h266".
Sourcepub const VIDEO_MP4: Encoding
pub const VIDEO_MP4: Encoding
A video codec defined in MPEG-1, MPEG-2, MPEG-4, or registered at the MP4 registration authority.
Constant alias for string: "video/mp4".
Sourcepub const VIDEO_OGG: Encoding
pub const VIDEO_OGG: Encoding
An Ogg-encapsulated video stream.
Constant alias for string: "video/ogg".
Sourcepub const VIDEO_RAW: Encoding
pub const VIDEO_RAW: Encoding
An uncompressed, studio-quality video stream.
Constant alias for string: "video/raw".
Sourcepub const VIDEO_VP8: Encoding
pub const VIDEO_VP8: Encoding
A VP8-encoded video stream.
Constant alias for string: "video/vp8".
Sourcepub const VIDEO_VP9: Encoding
pub const VIDEO_VP9: Encoding
A VP9-encoded video stream.
Constant alias for string: "video/vp9".
Sourcepub const fn default() -> Self
pub const fn default() -> Self
The default Encoding is ZENOH_BYTES.
Sourcepub fn with_schema<S>(self, s: S) -> Self
pub fn with_schema<S>(self, s: S) -> Self
Set a schema for this encoding. Zenoh does not define what a schema is, and its semantics is left to the implementer.
E.g., a common schema for the text/plain encoding is utf-8.
Trait Implementations§
impl Eq for Encoding
impl StructuralPartialEq for Encoding
Auto Trait Implementations§
impl Freeze for Encoding
impl !RefUnwindSafe for Encoding
impl Send for Encoding
impl Sync for Encoding
impl Unpin for Encoding
impl !UnwindSafe for Encoding
Blanket Implementations§
Source§impl<Source> AccessAs for Source
impl<Source> AccessAs for Source
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more