#[non_exhaustive]pub struct AppInfo {
pub title: String,
pub version: String,
pub description: Option<String>,
pub id: Option<AppId>,
pub terms_of_service: Option<String>,
pub contact: Contact,
pub license: Option<License>,
pub tags: Vec<Tag>,
pub external_docs: Option<ExternalDocs>,
}Expand description
Service-level metadata, surfaced to the AsyncAPI generator as the spec Info object.
The title and the version are what a service must state; everything else is optional and reaches the document only when it is filled in.
§Examples
use ruststream::runtime::{App, AppInfo, RustStream};
use ruststream::{Contact, License, Tag};
fn app() -> impl App {
let info = AppInfo::new("payments", "1.4.0")
.description("everything the payment domain publishes")
.contact(Contact::new().email("payments@example.com"))
.license(License::new("Apache-2.0"))
.tag(Tag::new("payments"));
RustStream::new(info)
}Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.title: StringHuman-readable service title.
version: StringService version string.
description: Option<String>Optional longer description.
id: Option<AppId>The service’s own identifier, a URI. Emitted as the document’s root id.
terms_of_service: Option<String>Where the terms of service are published.
contact: ContactWho to contact about the service.
license: Option<License>The licence the service is published under.
Labels grouping the service among its neighbours.
external_docs: Option<ExternalDocs>Where the prose about this service lives.
Implementations§
Source§impl AppInfo
impl AppInfo
Sourcepub fn new(title: impl Into<String>, version: impl Into<String>) -> AppInfo
pub fn new(title: impl Into<String>, version: impl Into<String>) -> AppInfo
Creates info with a title and version and nothing else.
Sourcepub fn description(self, description: impl Into<String>) -> AppInfo
pub fn description(self, description: impl Into<String>) -> AppInfo
Sets the description.
Sourcepub fn id(self, id: AppId) -> AppInfo
pub fn id(self, id: AppId) -> AppInfo
Sets the service’s own identifier.
The identifier is a URI, which AppId checks on construction, so the document cannot
carry a title where a reader expects an identifier.
§Examples
use ruststream::runtime::{App, AppInfo, RustStream};
use ruststream::{AppId, AppIdError};
/// The id comes from the deployment's configuration, so a malformed one fails the build of
/// the app.
fn app(id: &str) -> Result<impl App, AppIdError> {
let info = AppInfo::new("payments", "1.4.0").id(id.parse::<AppId>()?);
Ok(RustStream::new(info))
}Sourcepub fn terms_of_service(self, url: impl Into<String>) -> AppInfo
pub fn terms_of_service(self, url: impl Into<String>) -> AppInfo
Sets where the terms of service are published.
§Examples
use ruststream::runtime::{App, AppInfo, RustStream};
fn app() -> impl App {
let info =
AppInfo::new("payments", "1.4.0").terms_of_service("https://example.com/terms");
RustStream::new(info)
}Sourcepub fn contact(self, contact: Contact) -> AppInfo
pub fn contact(self, contact: Contact) -> AppInfo
Sets who to contact about the service.
§Examples
use ruststream::Contact;
use ruststream::runtime::{App, AppInfo, RustStream};
fn app() -> impl App {
let info =
AppInfo::new("payments", "1.4.0").contact(Contact::new().name("Payments team"));
RustStream::new(info)
}Sourcepub fn license(self, license: License) -> AppInfo
pub fn license(self, license: License) -> AppInfo
Sets the licence the service is published under.
§Examples
use ruststream::License;
use ruststream::runtime::{App, AppInfo, RustStream};
fn app() -> impl App {
let info = AppInfo::new("payments", "1.4.0").license(License::new("MIT"));
RustStream::new(info)
}Sourcepub fn tag(self, tag: Tag) -> AppInfo
pub fn tag(self, tag: Tag) -> AppInfo
Adds one label to the service. Call repeatedly for several.
§Examples
use ruststream::Tag;
use ruststream::runtime::{App, AppInfo, RustStream};
fn app() -> impl App {
let info = AppInfo::new("payments", "1.4.0")
.tag(Tag::new("payments"))
.tag(Tag::new("public"));
RustStream::new(info)
}Sourcepub fn external_docs(self, docs: ExternalDocs) -> AppInfo
pub fn external_docs(self, docs: ExternalDocs) -> AppInfo
Sets where the prose about this service lives.
§Examples
use ruststream::ExternalDocs;
use ruststream::runtime::{App, AppInfo, RustStream};
fn app() -> impl App {
let info = AppInfo::new("payments", "1.4.0")
.external_docs(ExternalDocs::new("https://example.com/payments"));
RustStream::new(info)
}Trait Implementations§
Auto Trait Implementations§
impl Freeze for AppInfo
impl RefUnwindSafe for AppInfo
impl Send for AppInfo
impl Sync for AppInfo
impl Unpin for AppInfo
impl UnsafeUnpin for AppInfo
impl UnwindSafe for AppInfo
Blanket Implementations§
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<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
Source§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
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