pub struct PackageReference {
pub name: String,
pub revision: u32,
}
Expand description
PackageReference is a reference to a protobuf package used by a module.
Fields§
§name: String
name is the fully-qualified name of the package.
revision: u32
revision is the optional revision of the package that is being used. Protobuf packages used in Cosmos should generally have a major version as the last part of the package name, ex. foo.bar.baz.v1. The revision of a package can be thought of as the minor version of a package which has additional backwards compatible definitions that weren’t present in a previous version.
A package should indicate its revision with a source code comment above the package declaration in one of its files containing the text “Revision N” where N is an integer revision. All packages start at revision 0 the first time they are released in a module.
When a new version of a module is released and items are added to existing .proto files, these definitions should contain comments of the form “Since Revision N” where N is an integer revision.
When the module runtime starts up, it will check the pinned proto image and panic if there are runtime protobuf definitions that are not in the pinned descriptor which do not have a “Since Revision N” comment or have a “Since Revision N” comment where N is <= to the revision specified here. This indicates that the protobuf files have been updated, but the pinned file descriptor hasn’t.
If there are items in the pinned file descriptor with a revision greater than the value indicated here, this will also cause a panic as it may mean that the pinned descriptor for a legacy module has been improperly updated or that there is some other versioning discrepancy. Runtime protobuf definitions will also be checked for compatibility with pinned file descriptors to make sure there are no incompatible changes.
This behavior ensures that:
- pinned proto images are up-to-date
- protobuf files are carefully annotated with revision comments which are important good client UX
- protobuf files are changed in backwards and forwards compatible ways
Trait Implementations§
source§impl Clone for PackageReference
impl Clone for PackageReference
source§fn clone(&self) -> PackageReference
fn clone(&self) -> PackageReference
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for PackageReference
impl Debug for PackageReference
source§impl Default for PackageReference
impl Default for PackageReference
source§impl<'de> Deserialize<'de> for PackageReference
impl<'de> Deserialize<'de> for PackageReference
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where __D: Deserializer<'de>,
source§impl Message for PackageReference
impl Message for PackageReference
source§fn encoded_len(&self) -> usize
fn encoded_len(&self) -> usize
source§fn encode<B>(&self, buf: &mut B) -> Result<(), EncodeError>where
B: BufMut,
Self: Sized,
fn encode<B>(&self, buf: &mut B) -> Result<(), EncodeError>where B: BufMut, Self: Sized,
source§fn encode_to_vec(&self) -> Vec<u8>where
Self: Sized,
fn encode_to_vec(&self) -> Vec<u8>where Self: Sized,
source§fn encode_length_delimited<B>(&self, buf: &mut B) -> Result<(), EncodeError>where
B: BufMut,
Self: Sized,
fn encode_length_delimited<B>(&self, buf: &mut B) -> Result<(), EncodeError>where B: BufMut, Self: Sized,
source§fn encode_length_delimited_to_vec(&self) -> Vec<u8>where
Self: Sized,
fn encode_length_delimited_to_vec(&self) -> Vec<u8>where Self: Sized,
source§fn decode<B>(buf: B) -> Result<Self, DecodeError>where
B: Buf,
Self: Default,
fn decode<B>(buf: B) -> Result<Self, DecodeError>where B: Buf, Self: Default,
source§fn decode_length_delimited<B>(buf: B) -> Result<Self, DecodeError>where
B: Buf,
Self: Default,
fn decode_length_delimited<B>(buf: B) -> Result<Self, DecodeError>where B: Buf, Self: Default,
source§fn merge<B>(&mut self, buf: B) -> Result<(), DecodeError>where
B: Buf,
Self: Sized,
fn merge<B>(&mut self, buf: B) -> Result<(), DecodeError>where B: Buf, Self: Sized,
self
. Read moresource§fn merge_length_delimited<B>(&mut self, buf: B) -> Result<(), DecodeError>where
B: Buf,
Self: Sized,
fn merge_length_delimited<B>(&mut self, buf: B) -> Result<(), DecodeError>where B: Buf, Self: Sized,
self
.source§impl PartialEq for PackageReference
impl PartialEq for PackageReference
source§fn eq(&self, other: &PackageReference) -> bool
fn eq(&self, other: &PackageReference) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl Serialize for PackageReference
impl Serialize for PackageReference
impl StructuralPartialEq for PackageReference
Auto Trait Implementations§
impl RefUnwindSafe for PackageReference
impl Send for PackageReference
impl Sync for PackageReference
impl Unpin for PackageReference
impl UnwindSafe for PackageReference
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
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request