pub fn real_time_generate(&mut self) -> i64 {
        self.idx = (self.idx + 1) % 2048;

        let mut now_millis = get_time_millis();

        //supplement code for 'clock is moving backwards situation'.

        // If the milliseconds of the current clock are equal to
        // the number of milliseconds of the most recently generated id,
        // then check if enough 2048 are generated,
        // if enough then busy wait until the next millisecond.
        if now_millis == self.last_time_millis {
            if self.idx == 0 {
                now_millis = biding_time_conditions(self.last_time_millis);
                self.last_time_millis = now_millis;
            }
        } else {
            self.last_time_millis = now_millis;
            self.idx = 0;
        }

        // last_time_millis is 64 bits，left shift 23 bit，store 41 bits 
        // machine is 20 bits, left shift 10 bit, store 10 bits
        // idx complementing bits.
        self.last_time_millis << 22
            | ((self.machine_bits << 12) as i64)
            | (self.idx as i64)
    }
/// The real_time_generate keep id generate time is eq call method time.
///
/// # Examples
///
/// ```
/// use snowflake::SnowflakeIdGenerator;
///
/// let mut id_generator = SnowflakeIdGenerator::new_from_ip("102.65.2.123".to_string());
/// id_generator.real_time_generate();
/// ```
The real_time_generate keep id generate time is eq call method time.
The real_time_generate keep id generate time is eq call method time .
pub fn real_time_generate(&mut self) -> i64 {
        self.idx = (self.idx + 1) % 2048;
        let mut now_millis = get_time_millis();
        //supplement code for 'clock is moving backwards situation'.
        // If the milliseconds of the current clock are equal to
        // the number of milliseconds of the most recently generated id,
        // then check if enough 2048 are generated,
        // if enough then busy wait until the next millisecond.
        if now_millis == self.last_time_millis {
            if self.idx == 0 {
                now_millis = biding_time_conditions(self.last_time_millis);
                self.last_time_millis = now_millis;
            }
        } else {
            self.last_time_millis = now_millis;
            self.idx = 0;
        }
        // last_time_millis is 64 bits，left shift 23 bit，store 41 bits 
        // machine is 20 bits, left shift 10 bit, store 10 bits
        // idx complementing bits.
        self.last_time_millis << 22
            | ((self.machine_bits << 12) as i64)
            | (self.idx as i64)
    }
pub fn real_time_generate ( & mut self ) -> i64 { self . idx = ( self . idx + 1 ) % 2048 ; let mut now_millis = get_time_millis ( ) ; //supplement code for 'clock is moving backwards situation'. // If the milliseconds of the current clock are equal to // the number of milliseconds of the most recently generated id, // then check if enough 2048 are generated, // if enough then busy wait until the next millisecond. if now_millis == self . last_time_millis { if self . idx == 0 { now_millis = biding_time_conditions ( self . last_time_millis ) ; self . last_time_millis = now_millis ; } } else { self . last_time_millis = now_millis ; self . idx = 0 ; } // last_time_millis is 64 bits，left shift 23 bit，store 41 bits  // machine is 20 bits, left shift 10 bit, store 10 bits // idx complementing bits. self . last_time_millis << 22 | ( ( self . machine_bits << 12 ) as i64 ) | ( self . idx as i64 ) }
The real_time_generate keep id generate time is eq call method time.
The real_time_generate keep id generate time is eq call method time .
&mut self
examples
```
use snowflake::SnowflakeIdGenerator.

let mut id_generator = SnowflakeIdGenerator::new_from_ip("102.65.2.123".to_string());
id_generator.real_time_generate();
```
` ` ` use snowflake :: SnowflakeIdGenerator . let mut id_generator = SnowflakeIdGenerator :: new_from_ip ( " 102 . 65 . 2 . 123 " . to_string () ) ; id_generator . real_time_generate () ; ` ` `