From 690f2b46c5cd61ddf60dd44a66b943f695cba808 Mon Sep 17 00:00:00 2001 From: Samuel Hurel Date: Sun, 10 May 2020 14:41:04 +0200 Subject: [PATCH] Simplify cursor conversion --- src/lib.rs | 2 +- src/types/connection/cursor.rs | 38 ++++------------------------------ src/types/connection/mod.rs | 2 +- src/types/mod.rs | 2 +- 4 files changed, 7 insertions(+), 37 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index b2c8da29..2a6cb873 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -130,7 +130,7 @@ pub use subscription::{ }; pub use types::{ Connection, Cursor, DataSource, EmptyEdgeFields, EmptyMutation, EmptySubscription, PageInfo, - QueryOperation, ToGraphQLCursor, Upload, + QueryOperation, Upload, }; pub use validation::ValidationMode; diff --git a/src/types/connection/cursor.rs b/src/types/connection/cursor.rs index 1022dda1..3c92cbe2 100644 --- a/src/types/connection/cursor.rs +++ b/src/types/connection/cursor.rs @@ -9,12 +9,6 @@ use std::ops::{Deref, DerefMut}; #[derive(Clone, Ord, PartialOrd, Eq, PartialEq, Hash, Debug)] pub struct Cursor(String); -impl std::fmt::Display for Cursor { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "{}", self.0) - } -} - impl Deref for Cursor { type Target = String; @@ -29,36 +23,12 @@ impl DerefMut for Cursor { } } -impl From for Cursor { - fn from(value: String) -> Self { - Cursor(value) - } -} - -impl<'a> From<&'a str> for Cursor { - fn from(value: &'a str) -> Self { - Cursor(value.to_string()) - } -} - -impl From for Cursor { - fn from(value: usize) -> Self { - Cursor(value.to_string()) - } -} - -/// Convert any type that implements Display to the Cursor type -pub trait ToGraphQLCursor { - #[allow(missing_docs)] - fn to_graphql_cursor(&self) -> Cursor; -} - -impl ToGraphQLCursor for T +impl From for Cursor where - T: std::fmt::Display, + T: std::fmt::Display { - fn to_graphql_cursor(&self) -> Cursor { - Cursor(self.to_string()) + fn from(value: T) -> Self { + Cursor(value.to_string()) } } diff --git a/src/types/connection/mod.rs b/src/types/connection/mod.rs index 15f3b532..c63c63bd 100644 --- a/src/types/connection/mod.rs +++ b/src/types/connection/mod.rs @@ -7,7 +7,7 @@ mod slice; use crate::{Context, FieldResult, ObjectType}; pub use connection_type::Connection; -pub use cursor::{Cursor, ToGraphQLCursor}; +pub use cursor::{Cursor}; pub use page_info::PageInfo; /// Connection query operation diff --git a/src/types/mod.rs b/src/types/mod.rs index f0521357..bbebc10c 100644 --- a/src/types/mod.rs +++ b/src/types/mod.rs @@ -8,7 +8,7 @@ mod query_root; mod upload; pub use connection::{ - Connection, Cursor, DataSource, EmptyEdgeFields, PageInfo, QueryOperation, ToGraphQLCursor, + Connection, Cursor, DataSource, EmptyEdgeFields, PageInfo, QueryOperation, }; pub use empty_mutation::EmptyMutation; pub use empty_subscription::EmptySubscription;