diplomat_core::ast::types

Struct PathType

source
#[non_exhaustive]
pub struct PathType { pub path: Path, pub lifetimes: Vec<Lifetime>, }
Expand description

A named type that is just a path, e.g. std::borrow::Cow<'a, T>.

Fields (Non-exhaustive)§

This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
§path: Path§lifetimes: Vec<Lifetime>

Implementations§

source§

impl PathType

source

pub fn to_syn(&self) -> TypePath

source

pub fn new(path: Path) -> Self

source

pub fn extract_self_type(strct: &ItemStruct) -> Self

Get the Self type from a struct declaration.

Consider the following struct declaration:

struct RefList<'a> {
    data: &'a i32,
    next: Option<Box<Self>>,
}

When determining what type Self is in the next field, we would have to call this method on the syn::ItemStruct that represents this struct declaration. This method would then return a PathType representing RefList<'a>, so we know that’s what Self should refer to.

The reason this function exists though is so when we convert the fields’ types to PathTypes, we don’t panic. We don’t actually need to write the struct’s field types expanded in the macro, so this function is more for correctness,

source

pub fn resolve_with_path<'a>( &self, in_path: &Path, env: &'a Env, ) -> (Path, &'a CustomType)

If this is a TypeName::Named, grab the CustomType it points to from the env, which contains all CustomTypes across all FFI modules.

Also returns the path the CustomType is in (useful for resolving fields)

source

pub fn resolve<'a>(&self, in_path: &Path, env: &'a Env) -> &'a CustomType

If this is a TypeName::Named, grab the CustomType it points to from the env, which contains all CustomTypes across all FFI modules.

If you need to resolve struct fields later, call Self::resolve_with_path() instead to get the path to resolve the fields in.

Trait Implementations§

source§

impl Clone for PathType

source§

fn clone(&self) -> PathType

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 PathType

source§

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

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

impl<'de> Deserialize<'de> for PathType

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Display for PathType

source§

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

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

impl From<&TypePath> for PathType

source§

fn from(other: &TypePath) -> Self

Converts to this type from the input type.
source§

impl From<Path> for PathType

source§

fn from(other: Path) -> Self

Converts to this type from the input type.
source§

impl Hash for PathType

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl PartialEq for PathType

source§

fn eq(&self, other: &PathType) -> 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 Serialize for PathType

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Eq for PathType

source§

impl StructuralPartialEq for PathType

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> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

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> 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> ToString for T
where T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. 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.
source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,