pub struct SourceLocation(/* private fields */);Implementations§
Source§impl SourceLocation
impl SourceLocation
pub fn new(line: usize, col: usize) -> SourceLocation
pub fn line(&self) -> usize
Sourcepub fn col(&self) -> usize
pub fn col(&self) -> usize
Examples found in repository?
examples/dumps_ast.rs (line 195)
188 fn format_output<T>(&self, ast: &AstNode<T>, depth: usize) {
189 let spacing: String = std::iter::repeat(' ').take(depth).collect();
190
191 println!(
192 "{} {} -- '{}'::{},{}",
193 spacing,
194 std::any::type_name::<T>().split("::").last().unwrap(),
195 &self.source.to_string()[ast.start().col()..ast.end().col()],
196 ast.start().col(),
197 ast.end().col()
198 );
199 }More examples
examples/explain.rs (line 66)
37fn main() {
38 let args: Vec<_> = std::env::args().collect();
39
40 if args.len() < 2 {
41 eprintln!("Usage: {} <prog> [bindings]", args[0]);
42 return;
43 }
44
45 let bindings: serde_json::Value = if args.len() == 3 {
46 serde_json::from_str(&args[2]).expect("Failed to parse bindings")
47 } else {
48 serde_json::from_str::<serde_json::Value>("{}").unwrap()
49 };
50
51 let prog = rscel::Program::from_source(&args[1]).expect("Failed to compile");
52 let ast = prog.details().ast().unwrap();
53
54 let dumper = AstDumper::new();
55 let tree = dumper.dump_expr_node(ast);
56
57 let mut queue = Vec::new();
58 queue.push((tree, 0));
59
60 while !queue.is_empty() {
61 let (curr_node, depth) = queue.pop().expect("wut");
62
63 // for now only handle one line
64 let range = curr_node.range();
65
66 let start = range.start().col();
67 let end = range.end().col();
68
69 let src = &args[1][start..end];
70
71 print!("{}{} => ", " ".to_owned().repeat(depth), src);
72 match eval(src, &bindings) {
73 Ok(val) => println!("{}", val),
74 Err(err) => println!("err: {}", err),
75 }
76
77 for node in curr_node.into_children().into_iter().rev() {
78 if node.range() != range {
79 queue.push((node, depth + 1));
80 }
81 }
82 }
83}Trait Implementations§
Source§impl Clone for SourceLocation
impl Clone for SourceLocation
Source§fn clone(&self) -> SourceLocation
fn clone(&self) -> SourceLocation
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for SourceLocation
impl Debug for SourceLocation
Source§impl<'de> Deserialize<'de> for SourceLocation
impl<'de> Deserialize<'de> for SourceLocation
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
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 Ord for SourceLocation
impl Ord for SourceLocation
Source§fn cmp(&self, other: &SourceLocation) -> Ordering
fn cmp(&self, other: &SourceLocation) -> Ordering
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read more
Source§impl PartialEq for SourceLocation
impl PartialEq for SourceLocation
Source§impl PartialOrd for SourceLocation
impl PartialOrd for SourceLocation
Source§impl Serialize for SourceLocation
impl Serialize for SourceLocation
impl Copy for SourceLocation
impl Eq for SourceLocation
impl StructuralPartialEq for SourceLocation
Auto Trait Implementations§
impl Freeze for SourceLocation
impl RefUnwindSafe for SourceLocation
impl Send for SourceLocation
impl Sync for SourceLocation
impl Unpin for SourceLocation
impl UnwindSafe for SourceLocation
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more