author | Raphaël Gomès <rgomes@octobus.net> |
Tue, 19 Jul 2022 15:37:45 +0200 | |
changeset 49499 | ffd4b1f1c9cb |
parent 49041 | 11c0411bf4e2 |
child 49502 | 7c93e38a0bbd |
permissions | -rw-r--r-- |
44006
cb2e2b095dc9
rust-core: updated copyright notice
Georges Racinet <georges.racinet@octobus.net>
parents:
43922
diff
changeset
|
1 |
// Copyright 2018-2020 Georges Racinet <georges.racinet@octobus.net> |
cb2e2b095dc9
rust-core: updated copyright notice
Georges Racinet <georges.racinet@octobus.net>
parents:
43922
diff
changeset
|
2 |
// and Mercurial contributors |
40271
dbc28c91f7ff
rust: pure Rust lazyancestors iterator
Georges Racinet <gracinet@anybox.fr>
parents:
diff
changeset
|
3 |
// |
dbc28c91f7ff
rust: pure Rust lazyancestors iterator
Georges Racinet <gracinet@anybox.fr>
parents:
diff
changeset
|
4 |
// This software may be used and distributed according to the terms of the |
dbc28c91f7ff
rust: pure Rust lazyancestors iterator
Georges Racinet <gracinet@anybox.fr>
parents:
diff
changeset
|
5 |
// GNU General Public License version 2 or any later version. |
46511
43d63979a75e
rust: use HgError in RevlogError and Vfs
Simon Sapin <simon.sapin@octobus.net>
parents:
46508
diff
changeset
|
6 |
|
40271
dbc28c91f7ff
rust: pure Rust lazyancestors iterator
Georges Racinet <gracinet@anybox.fr>
parents:
diff
changeset
|
7 |
mod ancestors; |
41242
47881d2a9d99
rust: dagop.headrevs() Rust counterparts
Georges Racinet on ishtar.racinet.fr <georges@racinet.fr>
parents:
41241
diff
changeset
|
8 |
pub mod dagops; |
46506
39e9407820ac
rust: Introduce an `HgError` enum for common error cases
Simon Sapin <simon.sapin@octobus.net>
parents:
46503
diff
changeset
|
9 |
pub mod errors; |
49499
ffd4b1f1c9cb
rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net>
parents:
49041
diff
changeset
|
10 |
pub mod sparse; |
48557
791f5d5f7a96
hg-core: dedup LazyAncestors Iterator impl
pacien <pacien.trangirard@pacien.net>
parents:
48463
diff
changeset
|
11 |
pub use ancestors::{AncestorsIterator, MissingAncestors}; |
47115
5d62243c7732
rust: Add a Timestamp struct instead of abusing Duration
Simon Sapin <simon.sapin@octobus.net>
parents:
47107
diff
changeset
|
12 |
pub mod dirstate; |
47107
787ff5d21bcd
dirstate-tree: Make Rust DirstateMap bindings go through a trait object
Simon Sapin <simon.sapin@octobus.net>
parents:
46799
diff
changeset
|
13 |
pub mod dirstate_tree; |
42216
10b465d61556
rust-discovery: starting core implementation
Georges Racinet <georges.racinet@octobus.net>
parents:
41728
diff
changeset
|
14 |
pub mod discovery; |
47413
6e49769b7f97
rhg: add exit code to HgError::Abort()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
47343
diff
changeset
|
15 |
pub mod exit_codes; |
45939
a2eda1ff22aa
requirements: move loading to hg-core and add parsing
Simon Sapin <simon-commits@exyr.org>
parents:
45384
diff
changeset
|
16 |
pub mod requirements; |
42330
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Raphaël Gomès <rgomes@octobus.net>
parents:
42329
diff
changeset
|
17 |
pub mod testing; // unconditionally built, for use from integration tests |
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Raphaël Gomès <rgomes@octobus.net>
parents:
42329
diff
changeset
|
18 |
pub use dirstate::{ |
42891
a03a29462c0a
rust-dirstate: specify concrete return type of DirsMultiset::iter()
Yuya Nishihara <yuya@tcha.org>
parents:
42818
diff
changeset
|
19 |
dirs_multiset::{DirsMultiset, DirsMultisetIter}, |
44538
c8891bca40fb
rust-status: add bare `hg status` support in hg-core
Raphaël Gomès <rgomes@octobus.net>
parents:
44535
diff
changeset
|
20 |
status::{ |
48083
bf8837e3d7ce
dirstate: Remove the flat Rust DirstateMap implementation
Simon Sapin <simon.sapin@octobus.net>
parents:
47980
diff
changeset
|
21 |
BadMatch, BadType, DirstateStatus, HgPathCow, StatusError, |
46799
bcdcb4423ae3
rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents:
46638
diff
changeset
|
22 |
StatusOptions, |
44538
c8891bca40fb
rust-status: add bare `hg status` support in hg-core
Raphaël Gomès <rgomes@octobus.net>
parents:
44535
diff
changeset
|
23 |
}, |
48083
bf8837e3d7ce
dirstate: Remove the flat Rust DirstateMap implementation
Simon Sapin <simon.sapin@octobus.net>
parents:
47980
diff
changeset
|
24 |
DirstateEntry, DirstateParents, EntryState, |
42330
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Raphaël Gomès <rgomes@octobus.net>
parents:
42329
diff
changeset
|
25 |
}; |
45959
595979dc924e
copies: introduce a basic Rust function for `combine_changeset_copies`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45939
diff
changeset
|
26 |
pub mod copy_tracing; |
42349
e8f3740cc067
rust-filepatterns: add a Rust implementation of pattern-related utils
Raphaël Gomès <rgomes@octobus.net>
parents:
42330
diff
changeset
|
27 |
mod filepatterns; |
43490
a77d4fe347a4
rust-matchers: add `Matcher` trait and implement `AlwaysMatcher`
Raphaël Gomès <rgomes@octobus.net>
parents:
43271
diff
changeset
|
28 |
pub mod matchers; |
46167
8a4914397d02
rust: introduce Repo and Vfs types for filesystem abstraction
Simon Sapin <simon.sapin@octobus.net>
parents:
45959
diff
changeset
|
29 |
pub mod repo; |
44008
6b332c1fc7fe
rust-core: extracted a revlog submodule
Georges Racinet <georges.racinet@octobus.net>
parents:
44006
diff
changeset
|
30 |
pub mod revlog; |
6b332c1fc7fe
rust-core: extracted a revlog submodule
Georges Racinet <georges.racinet@octobus.net>
parents:
44006
diff
changeset
|
31 |
pub use revlog::*; |
46187
95d6f31e88db
hg-core: add basic config module
Raphaël Gomès <rgomes@octobus.net>
parents:
46167
diff
changeset
|
32 |
pub mod config; |
48463
5734b03ecf3e
rhg: Initial repository locking
Simon Sapin <simon.sapin@octobus.net>
parents:
48083
diff
changeset
|
33 |
pub mod lock; |
46638
1f55cd5b292f
rust: Add a log file rotation utility
Simon Sapin <simon.sapin@octobus.net>
parents:
46512
diff
changeset
|
34 |
pub mod logging; |
44999
a46e36b82461
hg-core: add Operation interface for high-level hg operations
Antoine Cezar <antoine.cezar@octobus.net>
parents:
44929
diff
changeset
|
35 |
pub mod operations; |
46501
4b381dbbf8b7
rhg: centralize parsing of `--rev` CLI arguments
Simon Sapin <simon.sapin@octobus.net>
parents:
46441
diff
changeset
|
36 |
pub mod revset; |
42610
5672bb73f61e
rust-utils: add docstrings and doctests for utils.rs
Raphaël Gomès <rgomes@octobus.net>
parents:
42609
diff
changeset
|
37 |
pub mod utils; |
47980
9cd35c8c6044
rust: Move VFS code to its own module
Simon Sapin <simon.sapin@octobus.net>
parents:
47413
diff
changeset
|
38 |
pub mod vfs; |
42349
e8f3740cc067
rust-filepatterns: add a Rust implementation of pattern-related utils
Raphaël Gomès <rgomes@octobus.net>
parents:
42330
diff
changeset
|
39 |
|
44329
934a79697c36
rust-dirs-multiset: improve temporary error message
Raphaël Gomès <rgomes@octobus.net>
parents:
44008
diff
changeset
|
40 |
use crate::utils::hg_path::{HgPathBuf, HgPathError}; |
42349
e8f3740cc067
rust-filepatterns: add a Rust implementation of pattern-related utils
Raphaël Gomès <rgomes@octobus.net>
parents:
42330
diff
changeset
|
41 |
pub use filepatterns::{ |
44346
d42eea9a0494
rust-filepatterns: improve API and robustness for pattern files parsing
Raphaël Gomès <rgomes@octobus.net>
parents:
44329
diff
changeset
|
42 |
parse_pattern_syntax, read_pattern_file, IgnorePattern, |
d42eea9a0494
rust-filepatterns: improve API and robustness for pattern files parsing
Raphaël Gomès <rgomes@octobus.net>
parents:
44329
diff
changeset
|
43 |
PatternFileWarning, PatternSyntax, |
42349
e8f3740cc067
rust-filepatterns: add a Rust implementation of pattern-related utils
Raphaël Gomès <rgomes@octobus.net>
parents:
42330
diff
changeset
|
44 |
}; |
43844
5ac243a92e37
rust-performance: introduce FastHashMap type alias for HashMap
Raphaël Gomès <rgomes@octobus.net>
parents:
43808
diff
changeset
|
45 |
use std::collections::HashMap; |
46512
6c778d20c8c2
rust: replace ToString impls with Display
Simon Sapin <simon.sapin@octobus.net>
parents:
46511
diff
changeset
|
46 |
use std::fmt; |
43844
5ac243a92e37
rust-performance: introduce FastHashMap type alias for HashMap
Raphaël Gomès <rgomes@octobus.net>
parents:
43808
diff
changeset
|
47 |
use twox_hash::RandomXxHashBuilder64; |
40271
dbc28c91f7ff
rust: pure Rust lazyancestors iterator
Georges Racinet <gracinet@anybox.fr>
parents:
diff
changeset
|
48 |
|
44551
d880805d5442
hg-core: add function timing information
Raphaël Gomès <rgomes@octobus.net>
parents:
44538
diff
changeset
|
49 |
/// This is a contract between the `micro-timer` crate and us, to expose |
d880805d5442
hg-core: add function timing information
Raphaël Gomès <rgomes@octobus.net>
parents:
44538
diff
changeset
|
50 |
/// the `log` crate as `crate::log`. |
d880805d5442
hg-core: add function timing information
Raphaël Gomès <rgomes@octobus.net>
parents:
44538
diff
changeset
|
51 |
use log; |
d880805d5442
hg-core: add function timing information
Raphaël Gomès <rgomes@octobus.net>
parents:
44538
diff
changeset
|
52 |
|
42349
e8f3740cc067
rust-filepatterns: add a Rust implementation of pattern-related utils
Raphaël Gomès <rgomes@octobus.net>
parents:
42330
diff
changeset
|
53 |
pub type LineNumber = usize; |
e8f3740cc067
rust-filepatterns: add a Rust implementation of pattern-related utils
Raphaël Gomès <rgomes@octobus.net>
parents:
42330
diff
changeset
|
54 |
|
43844
5ac243a92e37
rust-performance: introduce FastHashMap type alias for HashMap
Raphaël Gomès <rgomes@octobus.net>
parents:
43808
diff
changeset
|
55 |
/// Rust's default hasher is too slow because it tries to prevent collision |
5ac243a92e37
rust-performance: introduce FastHashMap type alias for HashMap
Raphaël Gomès <rgomes@octobus.net>
parents:
43808
diff
changeset
|
56 |
/// attacks. We are not concerned about those: if an ill-minded person has |
5ac243a92e37
rust-performance: introduce FastHashMap type alias for HashMap
Raphaël Gomès <rgomes@octobus.net>
parents:
43808
diff
changeset
|
57 |
/// write access to your repository, you have other issues. |
5ac243a92e37
rust-performance: introduce FastHashMap type alias for HashMap
Raphaël Gomès <rgomes@octobus.net>
parents:
43808
diff
changeset
|
58 |
pub type FastHashMap<K, V> = HashMap<K, V, RandomXxHashBuilder64>; |
5ac243a92e37
rust-performance: introduce FastHashMap type alias for HashMap
Raphaël Gomès <rgomes@octobus.net>
parents:
43808
diff
changeset
|
59 |
|
49041
11c0411bf4e2
dirstate-tree: optimize HashMap lookups with raw_entry_mut
Simon Sapin <simon.sapin@octobus.net>
parents:
48557
diff
changeset
|
60 |
// TODO: should this be the default `FastHashMap` for all of hg-core, not just |
11c0411bf4e2
dirstate-tree: optimize HashMap lookups with raw_entry_mut
Simon Sapin <simon.sapin@octobus.net>
parents:
48557
diff
changeset
|
61 |
// dirstate_tree? How does XxHash compare with AHash, hashbrown’s default? |
11c0411bf4e2
dirstate-tree: optimize HashMap lookups with raw_entry_mut
Simon Sapin <simon.sapin@octobus.net>
parents:
48557
diff
changeset
|
62 |
pub type FastHashbrownMap<K, V> = |
11c0411bf4e2
dirstate-tree: optimize HashMap lookups with raw_entry_mut
Simon Sapin <simon.sapin@octobus.net>
parents:
48557
diff
changeset
|
63 |
hashbrown::HashMap<K, V, RandomXxHashBuilder64>; |
11c0411bf4e2
dirstate-tree: optimize HashMap lookups with raw_entry_mut
Simon Sapin <simon.sapin@octobus.net>
parents:
48557
diff
changeset
|
64 |
|
42329
d1786c1d34fa
rust-dirstate: add rust implementation of `parse_dirstate` and `pack_dirstate`
Raphaël Gomès <rgomes@octobus.net>
parents:
42216
diff
changeset
|
65 |
#[derive(Debug, PartialEq)] |
42543
2dcee6497b0b
rust-dirstate: add "dirs" Rust implementation
Raphaël Gomès <rgomes@octobus.net>
parents:
42453
diff
changeset
|
66 |
pub enum DirstateMapError { |
42960
7a01778bc7b7
rust-hgpath: replace all paths and filenames with HgPath/HgPathBuf
Raphaël Gomès <rgomes@octobus.net>
parents:
42892
diff
changeset
|
67 |
PathNotFound(HgPathBuf), |
42543
2dcee6497b0b
rust-dirstate: add "dirs" Rust implementation
Raphaël Gomès <rgomes@octobus.net>
parents:
42453
diff
changeset
|
68 |
EmptyPath, |
44329
934a79697c36
rust-dirs-multiset: improve temporary error message
Raphaël Gomès <rgomes@octobus.net>
parents:
44008
diff
changeset
|
69 |
InvalidPath(HgPathError), |
43808
1fe2e574616e
rust-dirs: address failing tests for `dirs` impl with a temporary fix
Raphaël Gomès <rgomes@octobus.net>
parents:
43490
diff
changeset
|
70 |
} |
1fe2e574616e
rust-dirs: address failing tests for `dirs` impl with a temporary fix
Raphaël Gomès <rgomes@octobus.net>
parents:
43490
diff
changeset
|
71 |
|
46512
6c778d20c8c2
rust: replace ToString impls with Display
Simon Sapin <simon.sapin@octobus.net>
parents:
46511
diff
changeset
|
72 |
impl fmt::Display for DirstateMapError { |
6c778d20c8c2
rust: replace ToString impls with Display
Simon Sapin <simon.sapin@octobus.net>
parents:
46511
diff
changeset
|
73 |
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { |
43808
1fe2e574616e
rust-dirs: address failing tests for `dirs` impl with a temporary fix
Raphaël Gomès <rgomes@octobus.net>
parents:
43490
diff
changeset
|
74 |
match self { |
44329
934a79697c36
rust-dirs-multiset: improve temporary error message
Raphaël Gomès <rgomes@octobus.net>
parents:
44008
diff
changeset
|
75 |
DirstateMapError::PathNotFound(_) => { |
46512
6c778d20c8c2
rust: replace ToString impls with Display
Simon Sapin <simon.sapin@octobus.net>
parents:
46511
diff
changeset
|
76 |
f.write_str("expected a value, found none") |
43808
1fe2e574616e
rust-dirs: address failing tests for `dirs` impl with a temporary fix
Raphaël Gomès <rgomes@octobus.net>
parents:
43490
diff
changeset
|
77 |
} |
46512
6c778d20c8c2
rust: replace ToString impls with Display
Simon Sapin <simon.sapin@octobus.net>
parents:
46511
diff
changeset
|
78 |
DirstateMapError::EmptyPath => { |
6c778d20c8c2
rust: replace ToString impls with Display
Simon Sapin <simon.sapin@octobus.net>
parents:
46511
diff
changeset
|
79 |
f.write_str("Overflow in dirstate.") |
6c778d20c8c2
rust: replace ToString impls with Display
Simon Sapin <simon.sapin@octobus.net>
parents:
46511
diff
changeset
|
80 |
} |
6c778d20c8c2
rust: replace ToString impls with Display
Simon Sapin <simon.sapin@octobus.net>
parents:
46511
diff
changeset
|
81 |
DirstateMapError::InvalidPath(path_error) => path_error.fmt(f), |
43808
1fe2e574616e
rust-dirs: address failing tests for `dirs` impl with a temporary fix
Raphaël Gomès <rgomes@octobus.net>
parents:
43490
diff
changeset
|
82 |
} |
1fe2e574616e
rust-dirs: address failing tests for `dirs` impl with a temporary fix
Raphaël Gomès <rgomes@octobus.net>
parents:
43490
diff
changeset
|
83 |
} |
42543
2dcee6497b0b
rust-dirstate: add "dirs" Rust implementation
Raphaël Gomès <rgomes@octobus.net>
parents:
42453
diff
changeset
|
84 |
} |
2dcee6497b0b
rust-dirstate: add "dirs" Rust implementation
Raphaël Gomès <rgomes@octobus.net>
parents:
42453
diff
changeset
|
85 |
|
46503
2e2033081274
rust: replace trivial `impl From …` with `#[derive(derive_more::From)]`
Simon Sapin <simon.sapin@octobus.net>
parents:
46501
diff
changeset
|
86 |
#[derive(Debug, derive_more::From)] |
42765
7ceded4419a3
rust-dirstate: use EntryState enum instead of literals
Raphaël Gomès <rgomes@octobus.net>
parents:
42764
diff
changeset
|
87 |
pub enum DirstateError { |
7ceded4419a3
rust-dirstate: use EntryState enum instead of literals
Raphaël Gomès <rgomes@octobus.net>
parents:
42764
diff
changeset
|
88 |
Map(DirstateMapError), |
46507
68a15b5a7e58
rust: Replace DirstatePackError with HgError
Simon Sapin <simon.sapin@octobus.net>
parents:
46506
diff
changeset
|
89 |
Common(errors::HgError), |
42765
7ceded4419a3
rust-dirstate: use EntryState enum instead of literals
Raphaël Gomès <rgomes@octobus.net>
parents:
42764
diff
changeset
|
90 |
} |
7ceded4419a3
rust-dirstate: use EntryState enum instead of literals
Raphaël Gomès <rgomes@octobus.net>
parents:
42764
diff
changeset
|
91 |
|
47343
ed1583a845d2
dirstate-v2: Make more APIs fallible, returning Result
Simon Sapin <simon.sapin@octobus.net>
parents:
47115
diff
changeset
|
92 |
impl fmt::Display for DirstateError { |
ed1583a845d2
dirstate-v2: Make more APIs fallible, returning Result
Simon Sapin <simon.sapin@octobus.net>
parents:
47115
diff
changeset
|
93 |
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { |
ed1583a845d2
dirstate-v2: Make more APIs fallible, returning Result
Simon Sapin <simon.sapin@octobus.net>
parents:
47115
diff
changeset
|
94 |
match self { |
ed1583a845d2
dirstate-v2: Make more APIs fallible, returning Result
Simon Sapin <simon.sapin@octobus.net>
parents:
47115
diff
changeset
|
95 |
DirstateError::Map(error) => error.fmt(f), |
ed1583a845d2
dirstate-v2: Make more APIs fallible, returning Result
Simon Sapin <simon.sapin@octobus.net>
parents:
47115
diff
changeset
|
96 |
DirstateError::Common(error) => error.fmt(f), |
ed1583a845d2
dirstate-v2: Make more APIs fallible, returning Result
Simon Sapin <simon.sapin@octobus.net>
parents:
47115
diff
changeset
|
97 |
} |
ed1583a845d2
dirstate-v2: Make more APIs fallible, returning Result
Simon Sapin <simon.sapin@octobus.net>
parents:
47115
diff
changeset
|
98 |
} |
ed1583a845d2
dirstate-v2: Make more APIs fallible, returning Result
Simon Sapin <simon.sapin@octobus.net>
parents:
47115
diff
changeset
|
99 |
} |
ed1583a845d2
dirstate-v2: Make more APIs fallible, returning Result
Simon Sapin <simon.sapin@octobus.net>
parents:
47115
diff
changeset
|
100 |
|
46503
2e2033081274
rust: replace trivial `impl From …` with `#[derive(derive_more::From)]`
Simon Sapin <simon.sapin@octobus.net>
parents:
46501
diff
changeset
|
101 |
#[derive(Debug, derive_more::From)] |
42349
e8f3740cc067
rust-filepatterns: add a Rust implementation of pattern-related utils
Raphaël Gomès <rgomes@octobus.net>
parents:
42330
diff
changeset
|
102 |
pub enum PatternError { |
46503
2e2033081274
rust: replace trivial `impl From …` with `#[derive(derive_more::From)]`
Simon Sapin <simon.sapin@octobus.net>
parents:
46501
diff
changeset
|
103 |
#[from] |
44346
d42eea9a0494
rust-filepatterns: improve API and robustness for pattern files parsing
Raphaël Gomès <rgomes@octobus.net>
parents:
44329
diff
changeset
|
104 |
Path(HgPathError), |
42349
e8f3740cc067
rust-filepatterns: add a Rust implementation of pattern-related utils
Raphaël Gomès <rgomes@octobus.net>
parents:
42330
diff
changeset
|
105 |
UnsupportedSyntax(String), |
44346
d42eea9a0494
rust-filepatterns: improve API and robustness for pattern files parsing
Raphaël Gomès <rgomes@octobus.net>
parents:
44329
diff
changeset
|
106 |
UnsupportedSyntaxInFile(String, String, usize), |
d42eea9a0494
rust-filepatterns: improve API and robustness for pattern files parsing
Raphaël Gomès <rgomes@octobus.net>
parents:
44329
diff
changeset
|
107 |
TooLong(usize), |
46503
2e2033081274
rust: replace trivial `impl From …` with `#[derive(derive_more::From)]`
Simon Sapin <simon.sapin@octobus.net>
parents:
46501
diff
changeset
|
108 |
#[from] |
44346
d42eea9a0494
rust-filepatterns: improve API and robustness for pattern files parsing
Raphaël Gomès <rgomes@octobus.net>
parents:
44329
diff
changeset
|
109 |
IO(std::io::Error), |
44347
2fe89bec8011
rust-filepatterns: add support for `include` and `subinclude` patterns
Raphaël Gomès <rgomes@octobus.net>
parents:
44346
diff
changeset
|
110 |
/// Needed a pattern that can be turned into a regex but got one that |
2fe89bec8011
rust-filepatterns: add support for `include` and `subinclude` patterns
Raphaël Gomès <rgomes@octobus.net>
parents:
44346
diff
changeset
|
111 |
/// can't. This should only happen through programmer error. |
2fe89bec8011
rust-filepatterns: add support for `include` and `subinclude` patterns
Raphaël Gomès <rgomes@octobus.net>
parents:
44346
diff
changeset
|
112 |
NonRegexPattern(IgnorePattern), |
42349
e8f3740cc067
rust-filepatterns: add a Rust implementation of pattern-related utils
Raphaël Gomès <rgomes@octobus.net>
parents:
42330
diff
changeset
|
113 |
} |
e8f3740cc067
rust-filepatterns: add a Rust implementation of pattern-related utils
Raphaël Gomès <rgomes@octobus.net>
parents:
42330
diff
changeset
|
114 |
|
46512
6c778d20c8c2
rust: replace ToString impls with Display
Simon Sapin <simon.sapin@octobus.net>
parents:
46511
diff
changeset
|
115 |
impl fmt::Display for PatternError { |
6c778d20c8c2
rust: replace ToString impls with Display
Simon Sapin <simon.sapin@octobus.net>
parents:
46511
diff
changeset
|
116 |
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { |
44346
d42eea9a0494
rust-filepatterns: improve API and robustness for pattern files parsing
Raphaël Gomès <rgomes@octobus.net>
parents:
44329
diff
changeset
|
117 |
match self { |
d42eea9a0494
rust-filepatterns: improve API and robustness for pattern files parsing
Raphaël Gomès <rgomes@octobus.net>
parents:
44329
diff
changeset
|
118 |
PatternError::UnsupportedSyntax(syntax) => { |
46512
6c778d20c8c2
rust: replace ToString impls with Display
Simon Sapin <simon.sapin@octobus.net>
parents:
46511
diff
changeset
|
119 |
write!(f, "Unsupported syntax {}", syntax) |
44346
d42eea9a0494
rust-filepatterns: improve API and robustness for pattern files parsing
Raphaël Gomès <rgomes@octobus.net>
parents:
44329
diff
changeset
|
120 |
} |
d42eea9a0494
rust-filepatterns: improve API and robustness for pattern files parsing
Raphaël Gomès <rgomes@octobus.net>
parents:
44329
diff
changeset
|
121 |
PatternError::UnsupportedSyntaxInFile(syntax, file_path, line) => { |
46512
6c778d20c8c2
rust: replace ToString impls with Display
Simon Sapin <simon.sapin@octobus.net>
parents:
46511
diff
changeset
|
122 |
write!( |
6c778d20c8c2
rust: replace ToString impls with Display
Simon Sapin <simon.sapin@octobus.net>
parents:
46511
diff
changeset
|
123 |
f, |
44346
d42eea9a0494
rust-filepatterns: improve API and robustness for pattern files parsing
Raphaël Gomès <rgomes@octobus.net>
parents:
44329
diff
changeset
|
124 |
"{}:{}: unsupported syntax {}", |
d42eea9a0494
rust-filepatterns: improve API and robustness for pattern files parsing
Raphaël Gomès <rgomes@octobus.net>
parents:
44329
diff
changeset
|
125 |
file_path, line, syntax |
d42eea9a0494
rust-filepatterns: improve API and robustness for pattern files parsing
Raphaël Gomès <rgomes@octobus.net>
parents:
44329
diff
changeset
|
126 |
) |
d42eea9a0494
rust-filepatterns: improve API and robustness for pattern files parsing
Raphaël Gomès <rgomes@octobus.net>
parents:
44329
diff
changeset
|
127 |
} |
d42eea9a0494
rust-filepatterns: improve API and robustness for pattern files parsing
Raphaël Gomès <rgomes@octobus.net>
parents:
44329
diff
changeset
|
128 |
PatternError::TooLong(size) => { |
46512
6c778d20c8c2
rust: replace ToString impls with Display
Simon Sapin <simon.sapin@octobus.net>
parents:
46511
diff
changeset
|
129 |
write!(f, "matcher pattern is too long ({} bytes)", size) |
44346
d42eea9a0494
rust-filepatterns: improve API and robustness for pattern files parsing
Raphaël Gomès <rgomes@octobus.net>
parents:
44329
diff
changeset
|
130 |
} |
46512
6c778d20c8c2
rust: replace ToString impls with Display
Simon Sapin <simon.sapin@octobus.net>
parents:
46511
diff
changeset
|
131 |
PatternError::IO(error) => error.fmt(f), |
6c778d20c8c2
rust: replace ToString impls with Display
Simon Sapin <simon.sapin@octobus.net>
parents:
46511
diff
changeset
|
132 |
PatternError::Path(error) => error.fmt(f), |
44347
2fe89bec8011
rust-filepatterns: add support for `include` and `subinclude` patterns
Raphaël Gomès <rgomes@octobus.net>
parents:
44346
diff
changeset
|
133 |
PatternError::NonRegexPattern(pattern) => { |
46512
6c778d20c8c2
rust: replace ToString impls with Display
Simon Sapin <simon.sapin@octobus.net>
parents:
46511
diff
changeset
|
134 |
write!(f, "'{:?}' cannot be turned into a regex", pattern) |
44347
2fe89bec8011
rust-filepatterns: add support for `include` and `subinclude` patterns
Raphaël Gomès <rgomes@octobus.net>
parents:
44346
diff
changeset
|
135 |
} |
44346
d42eea9a0494
rust-filepatterns: improve API and robustness for pattern files parsing
Raphaël Gomès <rgomes@octobus.net>
parents:
44329
diff
changeset
|
136 |
} |
42349
e8f3740cc067
rust-filepatterns: add a Rust implementation of pattern-related utils
Raphaël Gomès <rgomes@octobus.net>
parents:
42330
diff
changeset
|
137 |
} |
e8f3740cc067
rust-filepatterns: add a Rust implementation of pattern-related utils
Raphaël Gomès <rgomes@octobus.net>
parents:
42330
diff
changeset
|
138 |
} |