pub struct Label<S = Range<usize>> { /* private fields */ }
Expand description
A type that represents a labelled section of source code.
Implementations§
Source§impl<S> Label<S>
impl<S> Label<S>
Sourcepub fn new(span: S) -> Self
pub fn new(span: S) -> Self
Create a new Label
.
Examples found in repository?
More examples
3fn main() {
4 let mut colors = ColorGenerator::new();
5
6 // Generate some colours for each of our elements
7 let a = colors.next();
8 let b = colors.next();
9 let c = colors.next();
10
11 Report::build(ReportKind::Error, "b.tao", 10)
12 .with_code(3)
13 .with_message(format!("Cannot add types Nat and Str"))
14 .with_label(Label::new(("b.tao", 10..14))
15 .with_message(format!("This is of type {}", "Nat".fg(a)))
16 .with_color(a))
17 .with_label(Label::new(("b.tao", 17..20))
18 .with_message(format!("This is of type {}", "Str".fg(b)))
19 .with_color(b))
20 .with_label(Label::new(("b.tao", 15..16))
21 .with_message(format!(" {} and {} undergo addition here", "Nat".fg(a), "Str".fg(b)))
22 .with_color(c)
23 .with_order(10))
24 .with_label(Label::new(("a.tao", 4..8))
25 .with_message(format!("Original definition of {} is here", "five".fg(a)))
26 .with_color(a))
27 .with_note(format!("{} is a number and can only be added to other numbers", "Nat".fg(a)))
28 .finish()
29 .print(sources(vec![
30 ("a.tao", include_str!("a.tao")),
31 ("b.tao", include_str!("b.tao")),
32 ]))
33 .unwrap();
34}
3fn main() {
4 let mut colors = ColorGenerator::new();
5
6 // Generate & choose some colours for each of our elements
7 let a = colors.next();
8 let b = colors.next();
9 let out = Color::Fixed(81);
10 let out2= colors.next();
11
12 Report::build(ReportKind::Error, "sample.tao", 12)
13 .with_code(3)
14 .with_message(format!("Incompatible types"))
15 .with_label(Label::new(("sample.tao", 32..33))
16 .with_message(format!("This is of type {}", "Nat".fg(a)))
17 .with_color(a))
18 .with_label(Label::new(("sample.tao", 42..45))
19 .with_message(format!("This is of type {}", "Str".fg(b)))
20 .with_color(b))
21 .with_label(Label::new(("sample.tao", 11..48))
22 .with_message(format!(
23 "The values are outputs of this {} expression",
24 "match".fg(out),
25 ))
26 .with_color(out))
27 .with_label(Label::new(("sample.tao", 0..48))
28 .with_message(format!(
29 "The {} has a problem",
30 "definition".fg(out2),
31 ))
32 .with_color(out2))
33 .with_label(Label::new(("sample.tao", 50..76))
34 .with_message(format!(
35 "Usage of {} here",
36 "definition".fg(out2),
37 ))
38 .with_color(out2))
39 .with_note(format!("Outputs of {} expressions must coerce to the same type", "match".fg(out)))
40 .finish()
41 .print(("sample.tao", Source::from(include_str!("sample.tao"))))
42 .unwrap();
43}
3fn main() {
4 let mut colors = ColorGenerator::new();
5
6 Report::build(ReportKind::Error, "stresstest.tao", 13)
7 .with_code(3)
8 .with_message(format!("Incompatible types"))
9 .with_label(Label::new(("stresstest.tao", 0..1)).with_message("Color").with_color(colors.next()))
10 .with_label(Label::new(("stresstest.tao", 1..2)).with_message("Color").with_color(colors.next()))
11 .with_label(Label::new(("stresstest.tao", 2..3)).with_message("Color").with_color(colors.next()))
12 .with_label(Label::new(("stresstest.tao", 3..4)).with_message("Color").with_color(colors.next()))
13 .with_label(Label::new(("stresstest.tao", 4..5)).with_message("Color").with_color(colors.next()))
14 .with_label(Label::new(("stresstest.tao", 5..6)).with_message("Color").with_color(colors.next()))
15 .with_label(Label::new(("stresstest.tao", 6..7)).with_message("Color").with_color(colors.next()))
16 .with_label(Label::new(("stresstest.tao", 7..8)).with_message("Color").with_color(colors.next()))
17 .with_label(Label::new(("stresstest.tao", 8..9)).with_message("Color").with_color(colors.next()))
18 .with_label(Label::new(("stresstest.tao", 9..10)).with_message("Color").with_color(colors.next()))
19 .with_label(Label::new(("stresstest.tao", 10..11)).with_message("Color").with_color(colors.next()))
20 .with_label(Label::new(("stresstest.tao", 11..12)).with_message("Color").with_color(colors.next()))
21 .with_label(Label::new(("stresstest.tao", 12..13)).with_message("Color").with_color(colors.next()))
22 .with_label(Label::new(("stresstest.tao", 13..14)).with_message("Color").with_color(colors.next()))
23 .with_label(Label::new(("stresstest.tao", 14..15)).with_message("Color").with_color(colors.next()))
24 .with_label(Label::new(("stresstest.tao", 15..16)).with_message("Color").with_color(colors.next()))
25 .with_label(Label::new(("stresstest.tao", 16..17)).with_message("Color").with_color(colors.next()))
26 .with_label(Label::new(("stresstest.tao", 17..18)).with_message("Color").with_color(colors.next()))
27 .with_label(Label::new(("stresstest.tao", 18..19)).with_message("Color").with_color(colors.next()))
28 .with_label(Label::new(("stresstest.tao", 19..20)).with_message("Color").with_color(colors.next()))
29 .with_label(Label::new(("stresstest.tao", 20..21)).with_message("Color").with_color(colors.next()))
30
31 .with_label(Label::new(("stresstest.tao", 18..19)).with_message("This is of type Nat").with_color(colors.next()))
32 .with_label(Label::new(("stresstest.tao", 13..16)).with_message("This is of type Str").with_color(colors.next()))
33 .with_label(Label::new(("stresstest.tao", 40..41)).with_message("This is of type Nat").with_color(colors.next()))
34 .with_label(Label::new(("stresstest.tao", 43..47)).with_message("This is of type Bool").with_color(colors.next()))
35 .with_label(Label::new(("stresstest.tao", 49..51)).with_message("This is of type ()").with_color(colors.next()))
36 .with_label(Label::new(("stresstest.tao", 53..55)).with_message("This is of type [_]").with_color(colors.next()))
37 .with_label(Label::new(("stresstest.tao", 25..78)).with_message("This is of type Str").with_color(colors.next()))
38 .with_label(Label::new(("stresstest.tao", 81..124)).with_message("This is of type Nat").with_color(colors.next()))
39 .with_label(Label::new(("stresstest.tao", 100..126)).with_message("This is an inner multi-line").with_color(colors.next()))
40 .with_label(Label::new(("stresstest.tao", 106..120)).with_message("This is another inner multi-line").with_color(colors.next()))
41 .with_label(Label::new(("stresstest.tao", 108..122)).with_message("This is *really* nested multi-line").with_color(colors.next()))
42 .with_label(Label::new(("stresstest.tao", 110..111)).with_message("This is an inline within the nesting!").with_color(colors.next()))
43 .with_label(Label::new(("stresstest.tao", 111..112)).with_message("And another!").with_color(colors.next()))
44 .with_label(Label::new(("stresstest.tao", 103..123)).with_message("This is *really* nested multi-line").with_color(colors.next()))
45 .with_label(Label::new(("stresstest.tao", 105..125)).with_message("This is *really* nested multi-line").with_color(colors.next()))
46 .with_label(Label::new(("stresstest.tao", 112..116)).with_message("This is *really* nested multi-line").with_color(colors.next()))
47 .with_label(Label::new(("stresstest.tao", 26..100)).with_message("Hahaha!").with_color(Color::Fixed(75)))
48 .with_label(Label::new(("stresstest.tao", 85..110)).with_message("Oh god, no more 1").with_color(colors.next()))
49 .with_label(Label::new(("stresstest.tao", 84..114)).with_message("Oh god, no more 2").with_color(colors.next()))
50 .with_label(Label::new(("stresstest.tao", 89..113)).with_message("Oh god, no more 3").with_color(colors.next()))
51 .with_config(Config::default()
52 .with_cross_gap(false)
53 .with_compact(true)
54 .with_underlines(true)
55 .with_tab_width(4))
56 .finish()
57 .print(("stresstest.tao", Source::from(include_str!("stresstest.tao"))))
58 .unwrap();
59}
Sourcepub fn with_message<M: ToString>(self, msg: M) -> Self
pub fn with_message<M: ToString>(self, msg: M) -> Self
Give this label a message.
Examples found in repository?
More examples
3fn main() {
4 let mut colors = ColorGenerator::new();
5
6 // Generate some colours for each of our elements
7 let a = colors.next();
8 let b = colors.next();
9 let c = colors.next();
10
11 Report::build(ReportKind::Error, "b.tao", 10)
12 .with_code(3)
13 .with_message(format!("Cannot add types Nat and Str"))
14 .with_label(Label::new(("b.tao", 10..14))
15 .with_message(format!("This is of type {}", "Nat".fg(a)))
16 .with_color(a))
17 .with_label(Label::new(("b.tao", 17..20))
18 .with_message(format!("This is of type {}", "Str".fg(b)))
19 .with_color(b))
20 .with_label(Label::new(("b.tao", 15..16))
21 .with_message(format!(" {} and {} undergo addition here", "Nat".fg(a), "Str".fg(b)))
22 .with_color(c)
23 .with_order(10))
24 .with_label(Label::new(("a.tao", 4..8))
25 .with_message(format!("Original definition of {} is here", "five".fg(a)))
26 .with_color(a))
27 .with_note(format!("{} is a number and can only be added to other numbers", "Nat".fg(a)))
28 .finish()
29 .print(sources(vec![
30 ("a.tao", include_str!("a.tao")),
31 ("b.tao", include_str!("b.tao")),
32 ]))
33 .unwrap();
34}
3fn main() {
4 let mut colors = ColorGenerator::new();
5
6 // Generate & choose some colours for each of our elements
7 let a = colors.next();
8 let b = colors.next();
9 let out = Color::Fixed(81);
10 let out2= colors.next();
11
12 Report::build(ReportKind::Error, "sample.tao", 12)
13 .with_code(3)
14 .with_message(format!("Incompatible types"))
15 .with_label(Label::new(("sample.tao", 32..33))
16 .with_message(format!("This is of type {}", "Nat".fg(a)))
17 .with_color(a))
18 .with_label(Label::new(("sample.tao", 42..45))
19 .with_message(format!("This is of type {}", "Str".fg(b)))
20 .with_color(b))
21 .with_label(Label::new(("sample.tao", 11..48))
22 .with_message(format!(
23 "The values are outputs of this {} expression",
24 "match".fg(out),
25 ))
26 .with_color(out))
27 .with_label(Label::new(("sample.tao", 0..48))
28 .with_message(format!(
29 "The {} has a problem",
30 "definition".fg(out2),
31 ))
32 .with_color(out2))
33 .with_label(Label::new(("sample.tao", 50..76))
34 .with_message(format!(
35 "Usage of {} here",
36 "definition".fg(out2),
37 ))
38 .with_color(out2))
39 .with_note(format!("Outputs of {} expressions must coerce to the same type", "match".fg(out)))
40 .finish()
41 .print(("sample.tao", Source::from(include_str!("sample.tao"))))
42 .unwrap();
43}
3fn main() {
4 let mut colors = ColorGenerator::new();
5
6 Report::build(ReportKind::Error, "stresstest.tao", 13)
7 .with_code(3)
8 .with_message(format!("Incompatible types"))
9 .with_label(Label::new(("stresstest.tao", 0..1)).with_message("Color").with_color(colors.next()))
10 .with_label(Label::new(("stresstest.tao", 1..2)).with_message("Color").with_color(colors.next()))
11 .with_label(Label::new(("stresstest.tao", 2..3)).with_message("Color").with_color(colors.next()))
12 .with_label(Label::new(("stresstest.tao", 3..4)).with_message("Color").with_color(colors.next()))
13 .with_label(Label::new(("stresstest.tao", 4..5)).with_message("Color").with_color(colors.next()))
14 .with_label(Label::new(("stresstest.tao", 5..6)).with_message("Color").with_color(colors.next()))
15 .with_label(Label::new(("stresstest.tao", 6..7)).with_message("Color").with_color(colors.next()))
16 .with_label(Label::new(("stresstest.tao", 7..8)).with_message("Color").with_color(colors.next()))
17 .with_label(Label::new(("stresstest.tao", 8..9)).with_message("Color").with_color(colors.next()))
18 .with_label(Label::new(("stresstest.tao", 9..10)).with_message("Color").with_color(colors.next()))
19 .with_label(Label::new(("stresstest.tao", 10..11)).with_message("Color").with_color(colors.next()))
20 .with_label(Label::new(("stresstest.tao", 11..12)).with_message("Color").with_color(colors.next()))
21 .with_label(Label::new(("stresstest.tao", 12..13)).with_message("Color").with_color(colors.next()))
22 .with_label(Label::new(("stresstest.tao", 13..14)).with_message("Color").with_color(colors.next()))
23 .with_label(Label::new(("stresstest.tao", 14..15)).with_message("Color").with_color(colors.next()))
24 .with_label(Label::new(("stresstest.tao", 15..16)).with_message("Color").with_color(colors.next()))
25 .with_label(Label::new(("stresstest.tao", 16..17)).with_message("Color").with_color(colors.next()))
26 .with_label(Label::new(("stresstest.tao", 17..18)).with_message("Color").with_color(colors.next()))
27 .with_label(Label::new(("stresstest.tao", 18..19)).with_message("Color").with_color(colors.next()))
28 .with_label(Label::new(("stresstest.tao", 19..20)).with_message("Color").with_color(colors.next()))
29 .with_label(Label::new(("stresstest.tao", 20..21)).with_message("Color").with_color(colors.next()))
30
31 .with_label(Label::new(("stresstest.tao", 18..19)).with_message("This is of type Nat").with_color(colors.next()))
32 .with_label(Label::new(("stresstest.tao", 13..16)).with_message("This is of type Str").with_color(colors.next()))
33 .with_label(Label::new(("stresstest.tao", 40..41)).with_message("This is of type Nat").with_color(colors.next()))
34 .with_label(Label::new(("stresstest.tao", 43..47)).with_message("This is of type Bool").with_color(colors.next()))
35 .with_label(Label::new(("stresstest.tao", 49..51)).with_message("This is of type ()").with_color(colors.next()))
36 .with_label(Label::new(("stresstest.tao", 53..55)).with_message("This is of type [_]").with_color(colors.next()))
37 .with_label(Label::new(("stresstest.tao", 25..78)).with_message("This is of type Str").with_color(colors.next()))
38 .with_label(Label::new(("stresstest.tao", 81..124)).with_message("This is of type Nat").with_color(colors.next()))
39 .with_label(Label::new(("stresstest.tao", 100..126)).with_message("This is an inner multi-line").with_color(colors.next()))
40 .with_label(Label::new(("stresstest.tao", 106..120)).with_message("This is another inner multi-line").with_color(colors.next()))
41 .with_label(Label::new(("stresstest.tao", 108..122)).with_message("This is *really* nested multi-line").with_color(colors.next()))
42 .with_label(Label::new(("stresstest.tao", 110..111)).with_message("This is an inline within the nesting!").with_color(colors.next()))
43 .with_label(Label::new(("stresstest.tao", 111..112)).with_message("And another!").with_color(colors.next()))
44 .with_label(Label::new(("stresstest.tao", 103..123)).with_message("This is *really* nested multi-line").with_color(colors.next()))
45 .with_label(Label::new(("stresstest.tao", 105..125)).with_message("This is *really* nested multi-line").with_color(colors.next()))
46 .with_label(Label::new(("stresstest.tao", 112..116)).with_message("This is *really* nested multi-line").with_color(colors.next()))
47 .with_label(Label::new(("stresstest.tao", 26..100)).with_message("Hahaha!").with_color(Color::Fixed(75)))
48 .with_label(Label::new(("stresstest.tao", 85..110)).with_message("Oh god, no more 1").with_color(colors.next()))
49 .with_label(Label::new(("stresstest.tao", 84..114)).with_message("Oh god, no more 2").with_color(colors.next()))
50 .with_label(Label::new(("stresstest.tao", 89..113)).with_message("Oh god, no more 3").with_color(colors.next()))
51 .with_config(Config::default()
52 .with_cross_gap(false)
53 .with_compact(true)
54 .with_underlines(true)
55 .with_tab_width(4))
56 .finish()
57 .print(("stresstest.tao", Source::from(include_str!("stresstest.tao"))))
58 .unwrap();
59}
Sourcepub fn with_color(self, color: Color) -> Self
pub fn with_color(self, color: Color) -> Self
Give this label a highlight colour.
Examples found in repository?
3fn main() {
4 let mut colors = ColorGenerator::new();
5
6 // Generate some colours for each of our elements
7 let a = colors.next();
8 let b = colors.next();
9 let c = colors.next();
10
11 Report::build(ReportKind::Error, "b.tao", 10)
12 .with_code(3)
13 .with_message(format!("Cannot add types Nat and Str"))
14 .with_label(Label::new(("b.tao", 10..14))
15 .with_message(format!("This is of type {}", "Nat".fg(a)))
16 .with_color(a))
17 .with_label(Label::new(("b.tao", 17..20))
18 .with_message(format!("This is of type {}", "Str".fg(b)))
19 .with_color(b))
20 .with_label(Label::new(("b.tao", 15..16))
21 .with_message(format!(" {} and {} undergo addition here", "Nat".fg(a), "Str".fg(b)))
22 .with_color(c)
23 .with_order(10))
24 .with_label(Label::new(("a.tao", 4..8))
25 .with_message(format!("Original definition of {} is here", "five".fg(a)))
26 .with_color(a))
27 .with_note(format!("{} is a number and can only be added to other numbers", "Nat".fg(a)))
28 .finish()
29 .print(sources(vec![
30 ("a.tao", include_str!("a.tao")),
31 ("b.tao", include_str!("b.tao")),
32 ]))
33 .unwrap();
34}
More examples
3fn main() {
4 let mut colors = ColorGenerator::new();
5
6 // Generate & choose some colours for each of our elements
7 let a = colors.next();
8 let b = colors.next();
9 let out = Color::Fixed(81);
10 let out2= colors.next();
11
12 Report::build(ReportKind::Error, "sample.tao", 12)
13 .with_code(3)
14 .with_message(format!("Incompatible types"))
15 .with_label(Label::new(("sample.tao", 32..33))
16 .with_message(format!("This is of type {}", "Nat".fg(a)))
17 .with_color(a))
18 .with_label(Label::new(("sample.tao", 42..45))
19 .with_message(format!("This is of type {}", "Str".fg(b)))
20 .with_color(b))
21 .with_label(Label::new(("sample.tao", 11..48))
22 .with_message(format!(
23 "The values are outputs of this {} expression",
24 "match".fg(out),
25 ))
26 .with_color(out))
27 .with_label(Label::new(("sample.tao", 0..48))
28 .with_message(format!(
29 "The {} has a problem",
30 "definition".fg(out2),
31 ))
32 .with_color(out2))
33 .with_label(Label::new(("sample.tao", 50..76))
34 .with_message(format!(
35 "Usage of {} here",
36 "definition".fg(out2),
37 ))
38 .with_color(out2))
39 .with_note(format!("Outputs of {} expressions must coerce to the same type", "match".fg(out)))
40 .finish()
41 .print(("sample.tao", Source::from(include_str!("sample.tao"))))
42 .unwrap();
43}
3fn main() {
4 let mut colors = ColorGenerator::new();
5
6 Report::build(ReportKind::Error, "stresstest.tao", 13)
7 .with_code(3)
8 .with_message(format!("Incompatible types"))
9 .with_label(Label::new(("stresstest.tao", 0..1)).with_message("Color").with_color(colors.next()))
10 .with_label(Label::new(("stresstest.tao", 1..2)).with_message("Color").with_color(colors.next()))
11 .with_label(Label::new(("stresstest.tao", 2..3)).with_message("Color").with_color(colors.next()))
12 .with_label(Label::new(("stresstest.tao", 3..4)).with_message("Color").with_color(colors.next()))
13 .with_label(Label::new(("stresstest.tao", 4..5)).with_message("Color").with_color(colors.next()))
14 .with_label(Label::new(("stresstest.tao", 5..6)).with_message("Color").with_color(colors.next()))
15 .with_label(Label::new(("stresstest.tao", 6..7)).with_message("Color").with_color(colors.next()))
16 .with_label(Label::new(("stresstest.tao", 7..8)).with_message("Color").with_color(colors.next()))
17 .with_label(Label::new(("stresstest.tao", 8..9)).with_message("Color").with_color(colors.next()))
18 .with_label(Label::new(("stresstest.tao", 9..10)).with_message("Color").with_color(colors.next()))
19 .with_label(Label::new(("stresstest.tao", 10..11)).with_message("Color").with_color(colors.next()))
20 .with_label(Label::new(("stresstest.tao", 11..12)).with_message("Color").with_color(colors.next()))
21 .with_label(Label::new(("stresstest.tao", 12..13)).with_message("Color").with_color(colors.next()))
22 .with_label(Label::new(("stresstest.tao", 13..14)).with_message("Color").with_color(colors.next()))
23 .with_label(Label::new(("stresstest.tao", 14..15)).with_message("Color").with_color(colors.next()))
24 .with_label(Label::new(("stresstest.tao", 15..16)).with_message("Color").with_color(colors.next()))
25 .with_label(Label::new(("stresstest.tao", 16..17)).with_message("Color").with_color(colors.next()))
26 .with_label(Label::new(("stresstest.tao", 17..18)).with_message("Color").with_color(colors.next()))
27 .with_label(Label::new(("stresstest.tao", 18..19)).with_message("Color").with_color(colors.next()))
28 .with_label(Label::new(("stresstest.tao", 19..20)).with_message("Color").with_color(colors.next()))
29 .with_label(Label::new(("stresstest.tao", 20..21)).with_message("Color").with_color(colors.next()))
30
31 .with_label(Label::new(("stresstest.tao", 18..19)).with_message("This is of type Nat").with_color(colors.next()))
32 .with_label(Label::new(("stresstest.tao", 13..16)).with_message("This is of type Str").with_color(colors.next()))
33 .with_label(Label::new(("stresstest.tao", 40..41)).with_message("This is of type Nat").with_color(colors.next()))
34 .with_label(Label::new(("stresstest.tao", 43..47)).with_message("This is of type Bool").with_color(colors.next()))
35 .with_label(Label::new(("stresstest.tao", 49..51)).with_message("This is of type ()").with_color(colors.next()))
36 .with_label(Label::new(("stresstest.tao", 53..55)).with_message("This is of type [_]").with_color(colors.next()))
37 .with_label(Label::new(("stresstest.tao", 25..78)).with_message("This is of type Str").with_color(colors.next()))
38 .with_label(Label::new(("stresstest.tao", 81..124)).with_message("This is of type Nat").with_color(colors.next()))
39 .with_label(Label::new(("stresstest.tao", 100..126)).with_message("This is an inner multi-line").with_color(colors.next()))
40 .with_label(Label::new(("stresstest.tao", 106..120)).with_message("This is another inner multi-line").with_color(colors.next()))
41 .with_label(Label::new(("stresstest.tao", 108..122)).with_message("This is *really* nested multi-line").with_color(colors.next()))
42 .with_label(Label::new(("stresstest.tao", 110..111)).with_message("This is an inline within the nesting!").with_color(colors.next()))
43 .with_label(Label::new(("stresstest.tao", 111..112)).with_message("And another!").with_color(colors.next()))
44 .with_label(Label::new(("stresstest.tao", 103..123)).with_message("This is *really* nested multi-line").with_color(colors.next()))
45 .with_label(Label::new(("stresstest.tao", 105..125)).with_message("This is *really* nested multi-line").with_color(colors.next()))
46 .with_label(Label::new(("stresstest.tao", 112..116)).with_message("This is *really* nested multi-line").with_color(colors.next()))
47 .with_label(Label::new(("stresstest.tao", 26..100)).with_message("Hahaha!").with_color(Color::Fixed(75)))
48 .with_label(Label::new(("stresstest.tao", 85..110)).with_message("Oh god, no more 1").with_color(colors.next()))
49 .with_label(Label::new(("stresstest.tao", 84..114)).with_message("Oh god, no more 2").with_color(colors.next()))
50 .with_label(Label::new(("stresstest.tao", 89..113)).with_message("Oh god, no more 3").with_color(colors.next()))
51 .with_config(Config::default()
52 .with_cross_gap(false)
53 .with_compact(true)
54 .with_underlines(true)
55 .with_tab_width(4))
56 .finish()
57 .print(("stresstest.tao", Source::from(include_str!("stresstest.tao"))))
58 .unwrap();
59}
Sourcepub fn with_order(self, order: i32) -> Self
pub fn with_order(self, order: i32) -> Self
Specify the order of this label relative to other labels.
Lower values correspond to this label having an earlier order.
If unspecified, labels default to an order of 0
.
When labels are displayed after a line the crate needs to decide which labels should be displayed first. By
Default, the orders labels based on where their associated line meets the text (see LabelAttach
).
Additionally, multi-line labels are ordered before inline labels. You can this this function to override this
behaviour.
Examples found in repository?
3fn main() {
4 let mut colors = ColorGenerator::new();
5
6 // Generate some colours for each of our elements
7 let a = colors.next();
8 let b = colors.next();
9 let c = colors.next();
10
11 Report::build(ReportKind::Error, "b.tao", 10)
12 .with_code(3)
13 .with_message(format!("Cannot add types Nat and Str"))
14 .with_label(Label::new(("b.tao", 10..14))
15 .with_message(format!("This is of type {}", "Nat".fg(a)))
16 .with_color(a))
17 .with_label(Label::new(("b.tao", 17..20))
18 .with_message(format!("This is of type {}", "Str".fg(b)))
19 .with_color(b))
20 .with_label(Label::new(("b.tao", 15..16))
21 .with_message(format!(" {} and {} undergo addition here", "Nat".fg(a), "Str".fg(b)))
22 .with_color(c)
23 .with_order(10))
24 .with_label(Label::new(("a.tao", 4..8))
25 .with_message(format!("Original definition of {} is here", "five".fg(a)))
26 .with_color(a))
27 .with_note(format!("{} is a number and can only be added to other numbers", "Nat".fg(a)))
28 .finish()
29 .print(sources(vec![
30 ("a.tao", include_str!("a.tao")),
31 ("b.tao", include_str!("b.tao")),
32 ]))
33 .unwrap();
34}
Sourcepub fn with_priority(self, priority: i32) -> Self
pub fn with_priority(self, priority: i32) -> Self
Specify the priority of this label relative to other labels.
Higher values correspond to this label having a higher priority.
If unspecified, labels default to a priority of 0
.
Label spans can overlap. When this happens, the crate needs to decide which labels to prioritise for various purposes such as highlighting. By default, spans with a smaller length get a higher priority. You can this this function to override this behaviour.