pub enum Backslash {
AsWritten,
Doubled,
}Expand description
How an engine writes a backslash between quotes — the one thing about its string literals the escape inside a composite key has to know.
The escape writes '\', '\\' and '\|' as literals, and engines
disagree about what those are. Standard SQL reads a backslash in a literal
as itself; some engines read it as the start of an escape, so one
backslash is written as two there. A literal written the wrong way is a
different string, or no string at all, and the key it makes is a number
no other engine computes.
Variants§
AsWritten
'\' is one backslash: standard SQL, and the default.
Doubled
'\\' is one backslash: the engine reads a backslash in a literal
as an escape.
Implementations§
Source§impl Backslash
impl Backslash
Sourcepub fn of(dialect: &dyn ExpressionRenderer) -> Self
pub fn of(dialect: &dyn ExpressionRenderer) -> Self
This engine’s answer, read from the engine’s own words.
The one place every dialect already says how it writes a backslash
between quotes is the list of words it reads as a missing value in a
file (ExpressionRenderer::render_missing_value): an engine whose
literals read a backslash as an escape writes each one twice there, so
that a word holding one stays that word. So the dialect is asked for a
word that is one backslash, and the answer is read off what it writes.
A dialect that writes the word as standard SQL does is
Backslash::AsWritten.
Parameters:
dialect: the engine the key is written for.
Sourcepub fn literal(self, prefix: &str, text: &str) -> String
pub fn literal(self, prefix: &str, text: &str) -> String
text as a string literal on this engine: between single quotes,
each backslash written the way this engine reads one, behind prefix,
the engine’s Unicode-literal prefix
(Lower::pattern_literal_prefix).
A quote in text is doubled.
Parameters:
prefix: what this engine puts in front of a Unicode literal.text: the literal’s characters.