What is the "evilest" thing you ever done with Rust?

62 points Stock_84

For me it's a "pusherator". An iterator like API that pushes elements to containers. Because it pushes elements it must be constructed backwards. You have to read it from right to left. It can easily be confused by iterators from same method names. The only benefit is that it can write to multiple containers at the same time :P

    let items = vec![1, 2, 3, 4, 5, 6, 7, 8, 9];
    let items2 = vec![];
    let items3 = vec![];
    let mut pusher = items2.filter(|x| x % 4 == 0).fork(items3).map(|x| x * 2);
    for item in items {
        pusher.push(item);
    }
    let (items2, items3) = pusher.into_inner().into_inner();
    assert_eq!(items2, vec![4, 8, 12, 16]);
    assert_eq!(items3, vec![2, 4, 6, 8, 10, 12, 14, 16, 18]);