@@ -265,11 +265,6 @@ where
265265 MaybeFatalTransition ( Err ( Rejection :: replyable_error ( event, error_state, error) ) )
266266 }
267267
268- #[ allow( dead_code) ]
269- pub ( crate ) fn fatal_with_state ( event : Event , error_state : ErrorState , error : Err ) -> Self {
270- MaybeFatalTransition ( Err ( Rejection :: replyable_error ( event, error_state, error) ) )
271- }
272-
273268 pub ( crate ) fn deconstruct (
274269 self ,
275270 ) -> ( PersistActions < Event > , Result < NextState , ApiError < Err , ErrorState > > ) {
@@ -400,82 +395,13 @@ impl<Event, NextState> NextStateTransition<Event, NextState> {
400395 }
401396}
402397
403- /// A transition that can result in the completion of a state machine or a transient error
404- /// Fatal errors cannot occur in this transition.
405- pub struct MaybeSuccessTransition < Event , SuccessValue , Err > (
406- Result < AcceptNextState < Event , SuccessValue > , Rejection < Event , Err > > ,
407- ) ;
408-
409- impl < Event , SuccessValue , Err > MaybeSuccessTransition < Event , SuccessValue , Err >
410- where
411- Err : std:: error:: Error ,
412- {
413- #[ allow( dead_code) ]
414- pub ( crate ) fn success ( event : Event , success_value : SuccessValue ) -> Self {
415- MaybeSuccessTransition ( Ok ( AcceptNextState ( event, success_value) ) )
416- }
417-
418- #[ allow( dead_code) ]
419- pub ( crate ) fn transient ( error : Err ) -> Self {
420- MaybeSuccessTransition ( Err ( Rejection :: transient ( error) ) )
421- }
422-
423- #[ allow( dead_code) ]
424- pub ( crate ) fn fatal ( event : Event , error : Err ) -> Self {
425- MaybeSuccessTransition ( Err ( Rejection :: fatal ( event, error) ) )
426- }
427-
428- pub ( crate ) fn deconstruct (
429- self ,
430- ) -> ( PersistActions < Event > , Result < SuccessValue , ApiError < Err > > ) {
431- match self . 0 {
432- Ok ( AcceptNextState ( event, success_value) ) =>
433- ( PersistActions :: SaveAndClose ( event) , Ok ( success_value) ) ,
434- Err ( Rejection :: Transient ( RejectTransient ( error) ) ) =>
435- ( PersistActions :: NoOp , Err ( ApiError :: Transient ( error) ) ) ,
436- Err ( Rejection :: Fatal ( RejectFatal ( event, error) ) ) =>
437- ( PersistActions :: SaveAndClose ( event) , Err ( ApiError :: Fatal ( error) ) ) ,
438- Err ( Rejection :: ReplyableError ( RejectReplyableError ( event, _, error) ) ) =>
439- ( PersistActions :: Save ( event) , Err ( ApiError :: Fatal ( error) ) ) ,
440- }
441- }
442-
443- pub fn save < P > (
444- self ,
445- persister : & P ,
446- ) -> Result < SuccessValue , PersistedError < Err , P :: InternalStorageError > >
447- where
448- P : SessionPersister < SessionEvent = Event > ,
449- {
450- let ( actions, outcome) = self . deconstruct ( ) ;
451- actions. execute ( persister) . map_err ( InternalPersistedError :: Storage ) ?;
452- Ok ( outcome. map_err ( InternalPersistedError :: Api ) ?)
453- }
454-
455- pub async fn save_async < P > (
456- self ,
457- persister : & P ,
458- ) -> Result < SuccessValue , PersistedError < Err , P :: InternalStorageError > >
459- where
460- P : AsyncSessionPersister < SessionEvent = Event > ,
461- Err : Send ,
462- SuccessValue : Send ,
463- Event : Send ,
464- {
465- let ( actions, outcome) = self . deconstruct ( ) ;
466- actions. execute_async ( persister) . await . map_err ( InternalPersistedError :: Storage ) ?;
467- Ok ( outcome. map_err ( InternalPersistedError :: Api ) ?)
468- }
469- }
470-
471398/// A transition that either advances to a live state or terminates the session.
472399///
473400/// No error path exists. Both outcomes are successful from the protocol's point
474401/// of view. The choice is determined by the source typestate's internal data,
475402/// not by the caller.
476403pub struct MaybeTerminalTransition < Event , NextState > ( MaybeTerminalOutcome < Event , NextState > ) ;
477404
478- #[ allow( dead_code) ]
479405impl < Event , NextState > MaybeTerminalTransition < Event , NextState > {
480406 pub ( crate ) fn advance ( event : Event , next_state : NextState ) -> Self {
481407 Self ( MaybeTerminalOutcome :: Advance ( AcceptNextState ( event, next_state) ) )
@@ -524,7 +450,6 @@ pub struct MaybeTerminalSuccessTransition<Event, NextState, Err>(
524450 MaybeTerminalSuccessOutcome < Event , NextState , Err > ,
525451) ;
526452
527- #[ allow( dead_code) ]
528453impl < Event , NextState , Err > MaybeTerminalSuccessTransition < Event , NextState , Err >
529454where
530455 Err : std:: error:: Error ,
@@ -710,13 +635,11 @@ where
710635/// Wrapper that marks the progression of a state machine
711636pub struct AcceptNextState < Event , NextState > ( Event , NextState ) ;
712637
713- #[ allow( dead_code) ]
714638enum MaybeTerminalOutcome < Event , NextState > {
715639 Advance ( AcceptNextState < Event , NextState > ) ,
716640 Terminate ( Event ) ,
717641}
718642
719- #[ allow( dead_code) ]
720643enum MaybeTerminalSuccessOutcome < Event , NextState , Err > {
721644 Advance ( AcceptNextState < Event , NextState > ) ,
722645 Terminate ( Event ) ,
@@ -1395,57 +1318,6 @@ mod tests {
13951318 run_test_cases ! ( test_cases) ;
13961319 }
13971320
1398- #[ tokio:: test]
1399- async fn test_maybe_success_transition ( ) {
1400- let event = InMemoryTestEvent ( "foo" . to_string ( ) ) ;
1401- let error_event = InMemoryTestEvent ( "error event" . to_string ( ) ) ;
1402-
1403- let test_cases = vec ! [
1404- TestCase {
1405- make_transition: Box :: new( {
1406- let event = event. clone( ) ;
1407- move || MaybeSuccessTransition :: success( event. clone( ) , ( ) )
1408- } ) ,
1409- expected_result: ExpectedResult {
1410- events: vec![ event. clone( ) ] ,
1411- is_closed: true ,
1412- error: None ,
1413- success: Some ( ( ) ) ,
1414- } ,
1415- } ,
1416- TestCase {
1417- make_transition: Box :: new( || {
1418- MaybeSuccessTransition :: transient( InMemoryTestError { } )
1419- } ) ,
1420- expected_result: ExpectedResult {
1421- events: vec![ ] ,
1422- is_closed: false ,
1423- error: Some (
1424- InternalPersistedError :: Api ( ApiError :: Transient ( InMemoryTestError { } ) )
1425- . into( ) ,
1426- ) ,
1427- success: None ,
1428- } ,
1429- } ,
1430- TestCase {
1431- make_transition: Box :: new( {
1432- let error_event = error_event. clone( ) ;
1433- move || MaybeSuccessTransition :: fatal( error_event. clone( ) , InMemoryTestError { } )
1434- } ) ,
1435- expected_result: ExpectedResult {
1436- events: vec![ error_event. clone( ) ] ,
1437- is_closed: true ,
1438- error: Some (
1439- InternalPersistedError :: Api ( ApiError :: Fatal ( InMemoryTestError { } ) ) . into( ) ,
1440- ) ,
1441- success: None ,
1442- } ,
1443- } ,
1444- ] ;
1445-
1446- run_test_cases ! ( test_cases) ;
1447- }
1448-
14491321 #[ tokio:: test]
14501322 async fn test_maybe_fatal_transition ( ) {
14511323 let event = InMemoryTestEvent ( "foo" . to_string ( ) ) ;
0 commit comments