atomic::regular
				
					
				
			This commit is contained in:
		
							parent
							
								
									d4460ad880
								
							
						
					
					
						commit
						060499a383
					
				| @ -1,4 +1,5 @@ | |||||||
| mod modes; | mod modes; | ||||||
|  | mod regular; | ||||||
| 
 | 
 | ||||||
| use std::error::Error; | use std::error::Error; | ||||||
| 
 | 
 | ||||||
| @ -6,8 +7,8 @@ use crate::mode::*; | |||||||
| 
 | 
 | ||||||
| pub use self::modes::{ | pub use self::modes::{ | ||||||
|     AExtensionResultM, AExtensionSourceM, AModeResultM, AtomicModeParse, AtomicModeProxy, |     AExtensionResultM, AExtensionSourceM, AModeResultM, AtomicModeParse, AtomicModeProxy, | ||||||
|     CRegularAtomic, RegularAtomic, |  | ||||||
| }; | }; | ||||||
|  | pub use self::regular::{CRegularAtomic, RegularAtomic}; | ||||||
| 
 | 
 | ||||||
| /// [`Atomic`] equivalent of [`ParseError`].
 | /// [`Atomic`] equivalent of [`ParseError`].
 | ||||||
| ///
 | ///
 | ||||||
|  | |||||||
| @ -52,41 +52,3 @@ where | |||||||
|         <<A as WithParseMode>::WithMode as AtomicModeProxy>::pma_extend(atomic, tail) |         <<A as WithParseMode>::WithMode as AtomicModeProxy>::pma_extend(atomic, tail) | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 |  | ||||||
| /// For auto-deriving [`RegularAtomic`] from concrete implementations.
 |  | ||||||
| pub trait CRegularAtomic: AtomicBase + ImplMode<Mode = RegularMode> { |  | ||||||
|     /// Concrete implementation of [`RegularAtomic::ra_deserialize`].
 |  | ||||||
|     fn cra_deserialize(stream: impl Stream) -> AParseResult<Self>; |  | ||||||
|     /// Concrete implementation of [`RegularAtomic::ra_extend`].
 |  | ||||||
|     fn cra_extend(self, tail: &[u8]) -> AParseResult<Self>; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| /// Mostly same as [`AtomicModeParse`] but requires [`Mode`] to be [`RegularMode`].
 |  | ||||||
| pub trait RegularAtomic: AtomicBase + ParseMode<Mode = RegularMode> { |  | ||||||
|     /// Same as [`AtomicModeParse::ma_deserialize`].
 |  | ||||||
|     fn ra_deserialize(stream: impl Stream) -> AParseResult<Self>; |  | ||||||
|     /// Same as [`AtomicModeParse::ma_extend`].
 |  | ||||||
|     fn ra_extend(self, tail: &[u8]) -> AParseResult<Self>; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| impl<A: AtomicModeParse + ParseMode<Mode = RegularMode>> RegularAtomic for A { |  | ||||||
|     fn ra_deserialize(stream: impl Stream) -> AParseResult<Self> { |  | ||||||
|         A::ma_deserialize(stream) |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     fn ra_extend(self, tail: &[u8]) -> AParseResult<Self> { |  | ||||||
|         A::ma_extend(self, tail) |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| impl<A: CRegularAtomic> AtomicModeProxy for WithMode<A, RegularMode> { |  | ||||||
|     type A = A; |  | ||||||
| 
 |  | ||||||
|     fn pma_deserialize<I: Stream>(stream: I) -> AModeResultM<Self::A, I> { |  | ||||||
|         A::cra_deserialize(stream) |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     fn pma_extend(atomic: AExtensionSourceM<Self::A>, tail: &[u8]) -> AExtensionResultM<Self::A> { |  | ||||||
|         atomic.cra_extend(tail) |  | ||||||
|     } |  | ||||||
| } |  | ||||||
|  | |||||||
							
								
								
									
										39
									
								
								src/atomic/regular.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								src/atomic/regular.rs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,39 @@ | |||||||
|  | use super::*; | ||||||
|  | 
 | ||||||
|  | /// For auto-deriving [`RegularAtomic`] from concrete implementations.
 | ||||||
|  | pub trait CRegularAtomic: AtomicBase + ImplMode<Mode = RegularMode> { | ||||||
|  |     /// Concrete implementation of [`RegularAtomic::ra_deserialize`].
 | ||||||
|  |     fn cra_deserialize(stream: impl Stream) -> AParseResult<Self>; | ||||||
|  |     /// Concrete implementation of [`RegularAtomic::ra_extend`].
 | ||||||
|  |     fn cra_extend(self, tail: &[u8]) -> AParseResult<Self>; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /// Mostly same as [`AtomicModeParse`] but requires [`Mode`] to be [`RegularMode`].
 | ||||||
|  | pub trait RegularAtomic: AtomicBase + ParseMode<Mode = RegularMode> { | ||||||
|  |     /// Same as [`AtomicModeParse::ma_deserialize`].
 | ||||||
|  |     fn ra_deserialize(stream: impl Stream) -> AParseResult<Self>; | ||||||
|  |     /// Same as [`AtomicModeParse::ma_extend`].
 | ||||||
|  |     fn ra_extend(self, tail: &[u8]) -> AParseResult<Self>; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | impl<A: AtomicModeParse + ParseMode<Mode = RegularMode>> RegularAtomic for A { | ||||||
|  |     fn ra_deserialize(stream: impl Stream) -> AParseResult<Self> { | ||||||
|  |         A::ma_deserialize(stream) | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     fn ra_extend(self, tail: &[u8]) -> AParseResult<Self> { | ||||||
|  |         A::ma_extend(self, tail) | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | impl<A: CRegularAtomic> AtomicModeProxy for WithMode<A, RegularMode> { | ||||||
|  |     type A = A; | ||||||
|  | 
 | ||||||
|  |     fn pma_deserialize<I: Stream>(stream: I) -> AModeResultM<Self::A, I> { | ||||||
|  |         A::cra_deserialize(stream) | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     fn pma_extend(atomic: AExtensionSourceM<Self::A>, tail: &[u8]) -> AExtensionResultM<Self::A> { | ||||||
|  |         atomic.cra_extend(tail) | ||||||
|  |     } | ||||||
|  | } | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user