0xe3aad

0xe3aad

使用Rust實現Helang😅

引入#

最近 b 站上很多小夥伴對何同學的錯誤程式碼進行了一些很有意思的二創,一度登上了 Github Trending:

vsZ7DO.png


其中看到有人使用 C++ 中的宏實現了何同學的 "或運算",於是受到啟發,使用 Rust 中的宏實現了一下。

Source Code#

fn parse_to_vec(nums: &str) -> Vec<usize> {
    let nums = nums.replace(' ', "");
    nums.split('|').map(|x| x.parse().unwrap()).collect()
}

fn power_con(powers: &mut [u8], nums: &[usize], power: u8) {
    for &num in nums {
        powers[num] = power;
    }
}

#[macro_export]
macro_rules! powerCon {
    ($powers: expr, $nums: expr, $force: expr) => {
        power_con($powers, &parse_to_vec(stringify!($nums)), $force)
    };
}

fn main() {
    let mut powers = [0_u8; 68];
    powerCon!(&mut powers, 0, 100);
    powerCon!(&mut powers, 1 | 2 | 6 | 7 | 11 | 52 | 57 | 58 | 65, 10);
    println!("{:?}", powers)
}

References#

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。