1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
#[cfg(not(target_arch = "wasm32"))] mod native { use crate::{error::QueryError, language::Language}; pub struct Query { pub inner: tree_sitter::Query, } impl Query { #[inline] pub fn new(language: &Language, source: &str) -> Result<Self, QueryError> { let inner = tree_sitter::Query::new(language.inner, source)?; Ok(Self { inner }) } } impl std::fmt::Debug for Query { fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result { std::fmt::Debug::fmt(&self.inner, fmt) } } impl From<tree_sitter::Query> for Query { #[inline] fn from(inner: tree_sitter::Query) -> Self { Self { inner } } } } #[cfg(not(target_arch = "wasm32"))] pub use native::*; #[cfg(target_arch = "wasm32")] mod wasm { use crate::{error::QueryError, language::Language}; pub struct Query { pub(crate) inner: web_tree_sitter::Query, } impl Query { #[inline] pub fn new(language: &Language, source: &str) -> Result<Self, QueryError> { let inner = language.inner.query(&source.into())?; Ok(Self { inner }) } } impl std::fmt::Debug for Query { fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result { std::fmt::Debug::fmt(&self.inner, fmt) } } impl Drop for Query { #[inline] fn drop(&mut self) { self.inner.delete(); } } impl From<web_tree_sitter::Query> for Query { #[inline] fn from(inner: web_tree_sitter::Query) -> Self { Self { inner } } } unsafe impl Send for Query { } unsafe impl Sync for Query { } } #[cfg(target_arch = "wasm32")] pub use wasm::*;