Concise One-Pass Rust Solution
Functional:\nrust\npub fn distance_between_bus_stops(A: Vec<i32>, start: i32, dest: i32) -> i32 {\n\tlet (l, r) = (start.min(dest) as usize, start.max(dest) as 
**Functional:**\n```rust\npub fn distance_between_bus_stops(A: Vec<i32>, start: i32, dest: i32) -> i32 {\n\tlet (l, r) = (start.min(dest) as usize, start.max(dest) as usize);\n\tlet d1: i32 = A[l..r].iter().sum();\n\tlet d2: i32 = A[r..A.len()].iter().chain(A[0..l].iter()).sum();\n\td1.min(d2)\n}\n```\n\n**Procedure:**\n```rust\npub fn distance_between_bus_stops(A: Vec<i32>, l: i32, r: i32) -> i32 {\n\tlet (mut d1, mut d2) = (0, 0);\n\tlet mut i = l as usize;\n\twhile i != r as usize {\n\t\td1 += A[i];\n\t\ti = (i + 1) % A.len();\n\t}\n\n\twhile i != l as usize {\n\t\td2 += A[i];\n\t\ti = (i + 1) % A.len();\n\t}\n\td1.min(d2)\n}\n```
[]