routing::resolving

Enum ComponentAddress

Source
pub enum ComponentAddress {
    Absolute {
        url: Url,
    },
    RelativePath {
        scheme: String,
        url: Url,
        context: ComponentResolutionContext,
    },
}
Expand description

Indicates the kind of ComponentAddress, and holds ComponentAddress properties specific to its kind. Note that there is no kind for a relative resource component URL (a URL that only contains a resource fragment, such as #meta/comp.cm) because ComponentAddress::from_url() and ComponentAddress::from_url_and_context() will translate a resource fragment component URL into one of the fully-resolvable ComponentAddresss.

Variants§

§

Absolute

A fully-qualified component URL.

Fields

§url: Url
§

RelativePath

A relative Component URL, starting with the package path; for example a subpackage relative URL such as “needed_package#meta/dep_component.cm”.

Fields

§scheme: String

This is the scheme of the ancestor component’s absolute URL, used to identify the Resolver in a ResolverRegistry.

§url: Url

The relative URL, represented as a url::Url with the relative:/// base prefix. url::Url cannot represent relative urls directly.

§context: ComponentResolutionContext

An opaque value (from the perspective of component resolution) required by the resolver when resolving a relative package path. For a given child component, this property is populated from a parent component’s resolution_context, as returned by the parent component’s resolver.

Implementations§

Source§

impl ComponentAddress

Source

pub fn from_absolute_url(component_url: &Url) -> Result<Self, ResolverError>

Parse the given absolute component_url and create a ComponentAddress with kind Absolute.

Source

pub async fn from_url<C: ComponentInstanceInterface>( component_url: &Url, component: &Arc<C>, ) -> Result<Self, ResolverError>

Parse the given component_url to determine if it is an absolute URL, a relative subpackage URL, or a relative resource URL, and return the corresponding ComponentAddress enum variant and value. If the URL is relative, use the component instance to get the required resolution context from the component’s parent.

Source

pub async fn from_url_and_context<C: ComponentInstanceInterface>( component_url: &Url, context: ComponentResolutionContext, component: &Arc<C>, ) -> Result<Self, ResolverError>

Parse the given component_url to determine if it is an absolute URL, a relative subpackage URL, or a relative resource URL, and return the corresponding ComponentAddress enum variant and value. If the URL is relative, the provided context is used.

Source

pub fn clone_with_new_resource( &self, some_resource: Option<&str>, ) -> Result<Self, ResolverError>

Creates a new ComponentAddress from self by replacing only the component URL resource.

Source

pub fn is_absolute(&self) -> bool

True if the address is Absolute.

Source

pub fn is_relative_path(&self) -> bool

True if the address is RelativePath.

Source

pub fn context(&self) -> &ComponentResolutionContext

Returns the ComponentResolutionContext value required to resolve for a RelativePath component URL.

Panics if called for an Absolute component address.

Source

pub fn scheme(&self) -> &str

Returns the URL scheme either provided for an Absolute URL or derived from the component’s parent. The scheme is used to look up a registered resolver, when resolving the component.

Source

pub fn path(&self) -> &str

Returns the URL path.

Source

pub fn query(&self) -> Option<&str>

Returns the optional query value for an Absolute component URL. Always returns None for Relative component URLs.

Source

pub fn resource(&self) -> Option<&str>

Returns the optional component resource, from the URL fragment.

Source

pub fn url(&self) -> &str

Returns the resolver-ready URL string and, if it is a RelativePath, Some(context), or None for an Absolute address.

Source

pub fn to_url_and_context(&self) -> (&str, Option<&ComponentResolutionContext>)

Returns the url() and Some(context) for resolving the URL, if the kind is RelativePath (or None if Absolute).

Trait Implementations§

Source§

impl Clone for ComponentAddress

Source§

fn clone(&self) -> ComponentAddress

Returns a copy of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for ComponentAddress

Source§

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

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

impl PartialEq for ComponentAddress

Source§

fn eq(&self, other: &ComponentAddress) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · 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 Eq for ComponentAddress

Source§

impl StructuralPartialEq for ComponentAddress

Auto Trait Implementations§

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, dst: *mut T)

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

impl<T, D> Encode<Ambiguous1, D> for T
where D: ResourceDialect,

Source§

unsafe fn encode( self, _encoder: &mut Encoder<'_, D>, _offset: usize, _depth: Depth, ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. Read more
Source§

impl<T, D> Encode<Ambiguous2, D> for T
where D: ResourceDialect,

Source§

unsafe fn encode( self, _encoder: &mut Encoder<'_, D>, _offset: usize, _depth: Depth, ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

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

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

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> IntoAny for T
where T: 'static + Send + Sync,

Source§

fn into_any(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Cast the given object into a dyn std::any::Any.
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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