kodept_core/structure/
span.rs

1use std::borrow::Cow;
2
3use derive_more::Constructor;
4
5use crate::code_point::CodePoint;
6use crate::structure::Located;
7
8#[repr(transparent)]
9#[derive(Constructor, Debug, Clone, PartialEq, Copy)]
10pub struct Span {
11    pub point: CodePoint,
12}
13
14impl Located for Span {
15    fn location(&self) -> CodePoint {
16        self.point
17    }
18}
19
20pub trait CodeHolder {
21    fn get_chunk(&self, at: CodePoint) -> Cow<str>;
22
23    fn get_chunk_located<L: Located>(&self, for_item: &L) -> Cow<str> {
24        self.get_chunk(for_item.location())
25    }
26}