类型转换

Cairo支持使用into和try_into方法将一个标量类型转换为另一个类型。 traits::Into 用于从较小的数据类型转换为较大的数据类型,而 traits::TryInto 用于从较大的数据类型转换为较小的数据类型,可能会发生溢出的情况。 例如:

    let a_number: u32 = 15;
    let my_felt252 = 15;

    // 由于 u32 可能不匹配 u8 和 u16,我们需要使用 try_into
    // 然后解包返回的 Option<T> 类型。
    let new_u8: u8 = a_number.try_into().unwrap();
    let new_u16: u16 = a_number.try_into().unwrap();

    // 由于 new_u32 的类型(u32)与 a_number 相同,我们可以直接赋值
    // 或使用 .into() 方法
    let new_u32: u32 = a_number;

    // 当从较小的大小类型强制转换为相等或较大的大小类型时,我们使用 .into() 方法
    // 注意:u64 和 u128 大于 u32,所以 u32 类型将始终适合其中
    let new_u64: u64 = a_number.into();
    let new_u128: u128 = a_number.into();

    // 由于 felt252 比 u256 小,我们可以使用 into() 方法
    let new_u256: u256 = my_felt252.into();
    let new_felt252: felt252 = new_u16.into();

    //注意,usize 比 felt252 小,因此我们使用 try_into
    let new_usize: usize = my_felt252.try_into().unwrap();
Last change: 2023-11-30, commit: 932307f