Skip to main content

InterfaceJson

Struct InterfaceJson 

Source
pub struct InterfaceJson<T>
where T: AsRef<str>,
{ /* private fields */ }
Expand description

The structure is a direct mapping of the JSON schema, they are then transformed in our internal representation of Interface when de-serializing using TryFrom.

The fields of the JSON can either be:

  • Required: the field is the value it represents, it cannot be omitted.
  • Optional with default: the field is optional, but it is value it represents (not wrapped in Option). It will not be serialized if the value is the default one.
  • Optional: the field is optional, it is wrapped in Option. It will not be serialized if the value is None.

Implementations§

Source§

impl<T> InterfaceJson<T>
where T: AsRef<str>,

Source

pub fn interface_name(&self) -> &str

The name of the interface.

This has to be an unique, alphanumeric reverse internet domain name, shorter than 128 characters.

Source

pub fn version_major(&self) -> i32

The Major version qualifier for this interface.

Interfaces with the same id and different version_major number are deemed incompatible. It is then acceptable to redefine any property of the interface when changing the major version number.

It must be a positive number.

Source

pub fn version_minor(&self) -> i32

The Minor version qualifier for this interface.

Interfaces with the same id and major version number and different version_minor number are deemed compatible between each other. When changing the minor number, it is then only possible to insert further mappings. Any other modification might lead to incompatibilities and undefined behavior.

It must be a positive number.

Source

pub fn interface_type(&self) -> InterfaceType

Identifies the type of this Interface.

Currently two types are supported: datastream and properties. Datastream should be used when dealing with streams of non-persistent data, where a single path receives updates and there’s no concept of state. Properties, instead, are meant to be an actual state and as such they have only a change history, and are retained.

Source

pub fn ownership(&self) -> Ownership

Identifies the direction of the interface.

Interfaces are meant to be unidirectional, and this property defines who’s sending or receiving data. device means the device/gateway is sending data to Astarte, consumer means the device/gateway is receiving data from Astarte. Bidirectional mode is not supported, you should instantiate another interface for that.

Source

pub fn aggregation(&self) -> Option<Aggregation>

Identifies the aggregation of the mappings of the interface.

Individual means every mapping changes state or streams data independently, whereas an object aggregation treats the interface as an object, making all the mappings changes interdependent. Choosing the right aggregation might drastically improve performances.

Source

pub fn description(&self) -> Option<&T>

An optional description of the interface.

Source

pub fn doc(&self) -> Option<&T>

A string containing documentation that will be injected in the generated client code.

Source

pub fn mappings(&self) -> &[Mapping<T>]

Mappings define the endpoint of the interface, where actual data is stored/streamed.

They are defined as relative URLs (e.g. /my/path) and can be parametrized (e.g.: /%{myparam}/path). A valid interface must have no mappings clash, which means that every mapping must resolve to a unique path or collection of paths (including parametrization). Every mapping acquires type, quality and aggregation of the interface.

Trait Implementations§

Source§

impl<T> Clone for InterfaceJson<T>
where T: AsRef<str> + Clone,

Source§

fn clone(&self) -> InterfaceJson<T>

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<T> Debug for InterfaceJson<T>
where T: AsRef<str> + Debug,

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de, T> Deserialize<'de> for InterfaceJson<T>
where T: AsRef<str> + Deserialize<'de> + Default,

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl<'a> From<&'a Interface> for InterfaceJson<Cow<'a, str>>

Source§

fn from(value: &'a Interface) -> Self

Converts to this type from the input type.
Source§

impl<'a, T> From<&'a T> for InterfaceJson<Cow<'a, str>>
where T: Schema,

Source§

fn from(value: &'a T) -> Self

Converts to this type from the input type.
Source§

impl<T> PartialEq for InterfaceJson<T>
where T: AsRef<str> + PartialEq,

Source§

fn eq(&self, other: &InterfaceJson<T>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<T> Serialize for InterfaceJson<T>
where T: AsRef<str> + Serialize,

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl<T> TryFrom<InterfaceJson<T>> for DatastreamIndividual
where T: AsRef<str> + Into<String>,

Source§

type Error = Error

The type returned in the event of a conversion error.
Source§

fn try_from(value: InterfaceJson<T>) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl<T> TryFrom<InterfaceJson<T>> for DatastreamObject
where T: AsRef<str> + Into<String>,

Source§

type Error = Error

The type returned in the event of a conversion error.
Source§

fn try_from(value: InterfaceJson<T>) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl<T> TryFrom<InterfaceJson<T>> for Interface
where T: AsRef<str> + Into<String>,

Source§

type Error = Error

The type returned in the event of a conversion error.
Source§

fn try_from(value: InterfaceJson<T>) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl<T> TryFrom<InterfaceJson<T>> for Properties
where T: AsRef<str> + Into<String>,

Source§

type Error = Error

The type returned in the event of a conversion error.
Source§

fn try_from(value: InterfaceJson<T>) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl<T> Eq for InterfaceJson<T>
where T: AsRef<str> + Eq,

Source§

impl<T> StructuralPartialEq for InterfaceJson<T>
where T: AsRef<str>,

Auto Trait Implementations§

§

impl<T> Freeze for InterfaceJson<T>
where T: Freeze,

§

impl<T> RefUnwindSafe for InterfaceJson<T>
where T: RefUnwindSafe,

§

impl<T> Send for InterfaceJson<T>
where T: Send,

§

impl<T> Sync for InterfaceJson<T>
where T: Sync,

§

impl<T> Unpin for InterfaceJson<T>
where T: Unpin,

§

impl<T> UnsafeUnpin for InterfaceJson<T>
where T: UnsafeUnpin,

§

impl<T> UnwindSafe for InterfaceJson<T>
where T: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,