@@ -27,35 +27,36 @@ fn handle_cancel(_goal_handle: Arc<GoalHandleFibonacci>) -> rclrs::CancelRespons
2727fn execute ( goal_handle : Arc < GoalHandleFibonacci > ) {
2828 println ! ( "Executing goal" ) ;
2929 let feedback = example_interfaces:: action:: Fibonacci_Feedback {
30- sequence : Vec :: new ( ) ,
31- } ;
32- feedback. sequence . push ( 0 ) ;
33- feedback. sequence . push ( 1 ) ;
34- let result = example_interfaces:: action:: Fibonacci_Result {
35- sequence : Vec :: new ( ) ,
30+ sequence : [ 0 , 1 ] . to_vec ( ) ,
3631 } ;
3732
38- let mut i = 1 ;
39- while i < goal_handle. goal ( ) . unwrap ( ) . order && rclrs:: ok ( ) {
33+ for i in 1 ..goal_handle. goal_request . order {
4034 if goal_handle. is_canceling ( ) {
41- result. sequence = feedback. sequence . clone ( ) ;
35+ let result = example_interfaces:: action:: Fibonacci_Result {
36+ sequence : Vec :: new ( ) ,
37+ } ;
38+
4239 goal_handle. canceled ( & result) ;
4340 println ! ( "Goal canceled" ) ;
4441 return ;
4542 }
46- // Update sequence
47- feedback. sequence . push ( feedback. sequence [ i as usize ] + feedback. sequence [ ( i - 1 ) as usize ] ) ;
43+
44+ // Update sequence sequence
45+ feedback
46+ . sequence
47+ . push ( feedback. sequence [ i as usize ] + feedback. sequence [ ( i - 1 ) as usize ] ) ;
4848 // Publish feedback
4949 goal_handle. publish_feedback ( & feedback) ;
5050 println ! ( "Publishing feedback" ) ;
5151 thread:: sleep ( std:: time:: Duration :: from_millis ( 100 ) ) ;
5252 }
53- // Check if goal is done
54- if rclrs:: ok ( ) {
55- result. sequence = feedback. sequence . clone ( ) ;
56- goal_handle. succeed ( & result) ;
57- println ! ( "Goal succeeded" ) ;
58- }
53+
54+ let result = example_interfaces:: action:: Fibonacci_Result {
55+ sequence : Vec :: new ( ) ,
56+ } ;
57+ result. sequence = feedback. sequence . clone ( ) ;
58+ goal_handle. succeed ( & result) ;
59+ println ! ( "Goal succeeded" ) ;
5960}
6061
6162fn handle_accepted ( goal_handle : Arc < GoalHandleFibonacci > ) {
0 commit comments