Coverage Report

Created: 2025-10-29 07:05

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/rust/registry/src/index.crates.io-1949cf8c6b5b557f/prost-0.13.5/src/name.rs
Line
Count
Source
1
//! Support for associating type name information with a [`Message`].
2
3
use crate::Message;
4
5
#[cfg(not(feature = "std"))]
6
use alloc::{format, string::String};
7
8
/// Associate a type name with a [`Message`] type.
9
pub trait Name: Message {
10
    /// Simple name for this [`Message`].
11
    /// This name is the same as it appears in the source .proto file, e.g. `FooBar`.
12
    const NAME: &'static str;
13
14
    /// Package name this message type is contained in. They are domain-like
15
    /// and delimited by `.`, e.g. `google.protobuf`.
16
    const PACKAGE: &'static str;
17
18
    /// Fully-qualified unique name for this [`Message`].
19
    /// It's prefixed with the package name and names of any parent messages,
20
    /// e.g. `google.rpc.BadRequest.FieldViolation`.
21
    /// By default, this is the package name followed by the message name.
22
    /// Fully-qualified names must be unique within a domain of Type URLs.
23
0
    fn full_name() -> String {
24
0
        format!("{}.{}", Self::PACKAGE, Self::NAME)
25
0
    }
26
27
    /// Type URL for this [`Message`], which by default is the full name with a
28
    /// leading slash, but may also include a leading domain name, e.g.
29
    /// `type.googleapis.com/google.profile.Person`.
30
    /// This can be used when serializing into the `google.protobuf.Any` type.
31
0
    fn type_url() -> String {
32
0
        format!("/{}", Self::full_name())
33
0
    }
34
}