1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
//! Defines the core routines required to implement a [`Source`]. //! //! Please, see the [`rust-releases`] for additional documentation on how this crate can be used. //! //! [`Source`]: crate::Source //! [`rust-releases`]: https://docs.rs/rust-releases #![deny(missing_docs)] #![deny(clippy::all)] #![deny(unsafe_code)] /// Defines release channels, such as the stable, beta and nightly release channels. pub(crate) mod channel; /// Errors for this crate. pub(crate) mod errors; /// Defines the `ReleaseIndex`. pub(crate) mod index; /// Defines a `Release` pub(crate) mod release; /// Re-export the semver crate to the root scope pub use semver; pub use crate::{ channel::Channel, errors::CoreError, errors::CoreResult, index::ReleaseIndex, release::Release, }; /// A `Source` is a set of inputs from which a release index can be built. pub trait Source { /// The error to be returned when an index can not be build for a source. type Error; /// Build a release index from a data set. fn build_index(&self) -> Result<ReleaseIndex, Self::Error>; } /// With `FetchResources`, the set of inputs required to build a release index can be fetched. pub trait FetchResources where Self: Sized, { /// The error to be returned when a resource can not be fetched. type Error; /// Fetch a set of inputs for a release channel. fn fetch_channel(channel: Channel) -> Result<Self, Self::Error>; }