pub struct Comments(/* private fields */);Expand description
An opaque container for comments from a parse SQL source code.
Implementations§
Source§impl Comments
impl Comments
Sourcepub fn find<R: RangeBounds<Location>>(&self, range: R) -> Iter<'_> ⓘ
pub fn find<R: RangeBounds<Location>>(&self, range: R) -> Iter<'_> ⓘ
Finds comments starting within the given location range. The order of iterator reflects the order of the comments as encountered in the parsed source code.
§Example
use sqlparser::{dialect::GenericDialect, parser::Parser, tokenizer::Location};
let sql = r#"/*
header comment ...
... spanning multiple lines
*/
-- first statement
SELECT 'hello' /* world */ FROM DUAL;
-- second statement
SELECT 123 FROM DUAL;
-- trailing comment
"#;
let (ast, comments) = Parser::parse_sql_with_comments(&GenericDialect, sql).unwrap();
// all comments appearing before line seven, i.e. before the first statement itself
assert_eq!(
&comments.find(..Location::new(7, 1)).map(|c| c.as_str()).collect::<Vec<_>>(),
&["\n header comment ...\n ... spanning multiple lines\n", " first statement\n"]);
// all comments appearing within the first statement
assert_eq!(
&comments.find(Location::new(7, 1)..Location::new(8,1)).map(|c| c.as_str()).collect::<Vec<_>>(),
&[" world "]);
// all comments appearing within or after the first statement
assert_eq!(
&comments.find(Location::new(7, 1)..).map(|c| c.as_str()).collect::<Vec<_>>(),
&[" world ", " second statement\n", " trailing comment\n"]);The Spanned trait allows you to access location information for certain AST nodes.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Comments
impl RefUnwindSafe for Comments
impl Send for Comments
impl Sync for Comments
impl Unpin for Comments
impl UnwindSafe for Comments
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