pub mod entries;
pub mod filter;
pub mod result;
pub mod view;
#[doc(inline)]
pub use entries::Entries;
#[doc(inline)]
pub use result::{
result,
Result,
};
#[doc(inline)]
pub use view::inner::Views;
use core::{
fmt,
marker::PhantomData,
};
pub struct Query<Views, Filters = filter::None, ResourceViews = view::Null, EntryViews = view::Null>
{
view: PhantomData<Views>,
filter: PhantomData<Filters>,
resource_views: PhantomData<ResourceViews>,
entry_views: PhantomData<EntryViews>,
}
impl<Views, Filters, ResourceViews, EntryViews> Query<Views, Filters, ResourceViews, EntryViews> {
#[must_use]
pub fn new() -> Self {
Self {
view: PhantomData,
filter: PhantomData,
resource_views: PhantomData,
entry_views: PhantomData,
}
}
}
impl<Views, Filters, ResourceViews, EntryViews> Default
for Query<Views, Filters, ResourceViews, EntryViews>
{
fn default() -> Self {
Self::new()
}
}
impl<Views, Filters, ResourceViews, EntryViews> Clone
for Query<Views, Filters, ResourceViews, EntryViews>
{
fn clone(&self) -> Self {
*self
}
}
impl<Views, Filters, ResourceViews, EntryViews> PartialEq
for Query<Views, Filters, ResourceViews, EntryViews>
{
fn eq(&self, _other: &Self) -> bool {
true
}
}
impl<Views, Filters, ResourceViews, EntryViews> Eq
for Query<Views, Filters, ResourceViews, EntryViews>
{
}
impl<Views, Filters, ResourceViews, EntryViews> Copy
for Query<Views, Filters, ResourceViews, EntryViews>
{
}
impl<Views, Filters, ResourceViews, EntryViews> fmt::Debug
for Query<Views, Filters, ResourceViews, EntryViews>
{
fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
formatter.debug_struct("Query").finish()
}
}
#[cfg(test)]
mod tests {
use super::Query;
use crate::query::Views;
use alloc::format;
#[test]
fn query_default() {
assert_eq!(Query::<Views!()>::default(), Query::<Views!()>::new());
}
#[test]
fn query_clone() {
let query = Query::<Views!()>::new();
assert_eq!(query.clone(), query);
}
#[test]
fn query_debug() {
assert_eq!(format!("{:?}", Query::<Views!()>::new()), "Query");
}
}