Struct YoshiLocation

Source
pub struct YoshiLocation {
    pub file: &'static str,
    pub line: u32,
    pub column: u32,
}
Available on crate feature serde only.
Expand description

Enhanced source code location with const evaluation.

YoshiLocation captures the file name, line number, and column number where an error or context was created. This is crucial for debugging and pinpointing the exact origin of an issue in the source code.

Fields§

§file: &'static str

File path with const string optimization.

A static string slice representing the full path to the source file.

§line: u32

Line number.

The line number in the source file.

§column: u32

Column number.

The column number within the line in the source file.

Implementations§

Source§

impl YoshiLocation

Source

pub const fn new(file: &'static str, line: u32, column: u32) -> Self

Creates a new location with const evaluation where possible.

This constructor is typically used by the yoshi_location! macro to capture source locations at compile time.

§Arguments
  • file - The static string slice representing the file path.
  • line - The line number.
  • column - The column number.
§Returns

A new YoshiLocation instance.

§Examples
const MY_LOCATION: YoshiLocation = YoshiLocation::new("src/main.rs", 10, 5);
assert_eq!(MY_LOCATION.file, "src/main.rs");
assert_eq!(MY_LOCATION.line, 10);
assert_eq!(MY_LOCATION.column, 5);
Source

pub fn filename(&self) -> &str

Gets just the filename without path for compact display.

This utility method extracts the base filename from the full file path, making it more convenient for display in logs or error messages.

§Returns

A string slice containing only the filename.

§Examples
let loc = YoshiLocation::new("/home/user/project/src/lib.rs", 1, 1);
assert_eq!(loc.filename(), "lib.rs");

let loc_windows = YoshiLocation::new("C:\\Users\\dev\\main.rs", 1, 1);
// On Windows, filename() should work with both path separators
assert!(loc_windows.filename().ends_with("main.rs"));

Trait Implementations§

Source§

impl Clone for YoshiLocation

Source§

fn clone(&self) -> YoshiLocation

Returns a duplicate 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 YoshiLocation

Source§

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

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

impl Deserialize<'static> for YoshiLocation

Source§

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

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

impl Display for YoshiLocation

Source§

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

Formats the YoshiLocation for display in file:line:column format.

§Arguments
  • f - The formatter to write into.
§Returns

A fmt::Result indicating success or failure of the formatting.

§Examples
let loc = YoshiLocation::new("src/utils.rs", 123, 45);
assert_eq!(format!("{}", loc), "utils.rs:123:45");
Source§

impl Hash for YoshiLocation

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 YoshiLocation

Source§

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

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 Copy for YoshiLocation

Source§

impl Eq for YoshiLocation

Source§

impl StructuralPartialEq for YoshiLocation

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, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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§

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.