Code Monkey home page Code Monkey logo

cargo-expand-mods's Introduction

Top Langs

cargo-expand-mods's People

Contributors

qryxip avatar

Watchers

 avatar

cargo-expand-mods's Issues

goes wrong for `#[path = "non-ascii-path"]`

#[path = "../non-ascii/empty.rs"] /* iiiiiiiiii */ mod empty;
error: expected one of `!` or `::`, found `empty`
 --> <stdin>:3:56
  |
3 | ...                   od empty;
  |                          ^^^^^ expected one of `!` or `::` here

Error: command ["/home/ryo/.rustup/toolchains/1.42.0-x86_64-unknown-linux-gnu/bin/rustfmt"] exited with code 1

Does not look so good

// src/znz/constant.rs

//! Represents _ℤ/nℤ_ where _n_ is a **constant value**.

use crate::pseudo_num_traits::PrimInt;
use crate::znz::implementation;

use std::marker::PhantomData;
use std::ops::{Add, Deref};

#[macro_export]
macro_rules! decl_znz(($name:ident = Znz<$ty:ty, $modulus:literal>) => {
    type $name = crate::znz::constant::Znz<$ty, __Modulus>;

    enum __Modulus {}

    impl crate::znz::constant::PseudoConst for __Modulus {
        type Value = $ty;
        const VALUE: $ty = $modulus;
    }
});

pub(crate) trait PseudoConst {
    type Value: Copy;
    const VALUE: Self::Value;
}

/// Represents _ℤ/nℤ_ where _n_ is a **constant value**.
pub(crate) struct Znz<R, M> {
    repr: R,
    phantom: PhantomData<fn() -> M>,
}

impl<R: PrimInt, M: PseudoConst<Value = R>> Znz<R, M> {
    pub(crate) fn new(val: R) -> Self {
        Self {
            repr: val % M::VALUE,
            phantom: PhantomData,
        }
    }
}

impl<R, M> Deref for Znz<R, M> {
    type Target = R;

    fn deref(&self) -> &R {
        &self.repr
    }
}

impl<R: PrimInt, M: PseudoConst<Value = R>> Add for Znz<R, M> {
    type Output = Self;

    fn add(self, rhs: Self) -> Self {
        Self::new(implementation::mod_add(*self, *rhs, M::VALUE))
    }
}

#![doc = " Represents _\u{2124}/n\u{2124}_ where _n_ is a **constant value**."]
use crate::pseudo_num_traits::PrimInt;
use crate::znz::implementation;
use std::marker::PhantomData;
use std::ops::{Add, Deref};
#[macro_export]
macro_rules ! decl_znz ( ( $ name : ident = Znz <$ ty : ty , $ modulus : literal > ) => { type $ name = crate :: znz :: constant :: Znz <$ ty , __Modulus >; enum __Modulus { } impl crate :: znz :: constant :: PseudoConst for __Modulus { type Value = $ ty ; const VALUE : $ ty = $ modulus ; } } ) ;
pub(crate) trait PseudoConst {
    type Value: Copy;
    const VALUE: Self::Value;
}
#[doc = " Represents _\u{2124}/n\u{2124}_ where _n_ is a **constant value**."]
pub(crate) struct Znz<R, M> {
    repr: R,
    phantom: PhantomData<fn() -> M>,
}
impl<R: PrimInt, M: PseudoConst<Value = R>> Znz<R, M> {
    pub(crate) fn new(val: R) -> Self {
        Self {
            repr: val % M::VALUE,
            phantom: PhantomData,
        }
    }
}
impl<R, M> Deref for Znz<R, M> {
    type Target = R;
    fn deref(&self) -> &R {
        &self.repr
    }
}
impl<R: PrimInt, M: PseudoConst<Value = R>> Add for Znz<R, M> {
    type Output = Self;
    fn add(self, rhs: Self) -> Self {
        Self::new(implementation::mod_add(*self, *rhs, M::VALUE))
    }
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.