[][src]Struct datetime_string::common::TimeNumOffsetColonStr

#[repr(transparent)]pub struct TimeNumOffsetColonStr(_);

String slice for a time offset in +hh:mm or -hh:mm format, such as +09:00 and -00:00.

This is also an RFC 3339 time-numoffset string.

Implementations

impl TimeNumOffsetColonStr[src]

pub fn from_str(s: &str) -> Result<&Self, Error>[src]

Creates a new &TimeNumOffsetColonStr from a string slice.

Examples

let offset = TimeNumOffsetColonStr::from_str("-12:34")?;
assert_eq!(offset.as_str(), "-12:34");

assert!(TimeNumOffsetColonStr::from_str("+00:00").is_ok());
assert!(TimeNumOffsetColonStr::from_str("+23:59").is_ok());
assert!(TimeNumOffsetColonStr::from_str("-00:00").is_ok());
assert!(TimeNumOffsetColonStr::from_str("-23:59").is_ok());

assert!(TimeNumOffsetColonStr::from_str("Z").is_err(), "Not time-numoffset");
assert!(TimeNumOffsetColonStr::from_str("+24:00").is_err(), "Invalid hour");
assert!(TimeNumOffsetColonStr::from_str("+00:60").is_err(), "Invalid minute");
assert!(TimeNumOffsetColonStr::from_str("-24:00").is_err(), "Invalid hour");
assert!(TimeNumOffsetColonStr::from_str("-00:60").is_err(), "Invalid minute");
assert!(TimeNumOffsetColonStr::from_str("?00:00").is_err(), "Invalid sign");
assert!(TimeNumOffsetColonStr::from_str("00:00").is_err(), "Sign is missing");

pub fn from_mut_str(s: &mut str) -> Result<&mut Self, Error>[src]

Creates a new &mut TimeNumOffsetColonStr from a mutable string slice.

Examples

use datetime_string::common::TimeOffsetSign;
let mut buf = "-12:34".to_owned();
let offset = TimeNumOffsetColonStr::from_mut_str(&mut buf)?;
assert_eq!(offset.as_str(), "-12:34");

offset.set_sign(TimeOffsetSign::Positive);
assert_eq!(offset.as_str(), "+12:34");

pub fn from_bytes(s: &[u8]) -> Result<&Self, Error>[src]

Creates a new &TimeNumOffsetColonStr from a byte slice.

Examples

let offset = TimeNumOffsetColonStr::from_bytes(b"-12:34")?;
assert_eq!(offset.as_str(), "-12:34");

assert!(TimeNumOffsetColonStr::from_bytes(b"+00:00").is_ok());
assert!(TimeNumOffsetColonStr::from_bytes(b"+23:59").is_ok());
assert!(TimeNumOffsetColonStr::from_bytes(b"-00:00").is_ok());
assert!(TimeNumOffsetColonStr::from_bytes(b"-23:59").is_ok());

assert!(TimeNumOffsetColonStr::from_bytes(b"Z").is_err(), "Not time-numoffset");
assert!(TimeNumOffsetColonStr::from_bytes(b"+24:00").is_err(), "Invalid hour");
assert!(TimeNumOffsetColonStr::from_bytes(b"+00:60").is_err(), "Invalid minute");
assert!(TimeNumOffsetColonStr::from_bytes(b"-24:00").is_err(), "Invalid hour");
assert!(TimeNumOffsetColonStr::from_bytes(b"-00:60").is_err(), "Invalid minute");
assert!(TimeNumOffsetColonStr::from_bytes(b"?00:00").is_err(), "Invalid sign");
assert!(TimeNumOffsetColonStr::from_bytes(b"00:00").is_err(), "Sign is missing");

pub fn from_bytes_mut(s: &mut [u8]) -> Result<&mut Self, Error>[src]

Creates a new &mut TimeNumOffsetColonStr from a mutable byte slice.

Examples

use datetime_string::common::TimeOffsetSign;
let mut buf: [u8; 6] = *b"-12:34";
let offset = TimeNumOffsetColonStr::from_bytes_mut(&mut buf)?;
assert_eq!(offset.as_str(), "-12:34");

offset.set_sign(TimeOffsetSign::Positive);
assert_eq!(offset.as_str(), "+12:34");

pub fn assign(&mut self, v: &Self)[src]

Assigns the given value.

Examples

let mut buf: [u8; 6] = *b"+09:00";
let offset = TimeNumOffsetColonStr::from_bytes_mut(&mut buf[..])?;
assert_eq!(offset.as_str(), "+09:00");

let newoffset = TimeNumOffsetColonStr::from_str("-00:00")?;

offset.assign(newoffset);
assert_eq!(offset.as_str(), "-00:00");
assert_eq!(buf, *b"-00:00");

#[must_use]pub fn as_str(&self) -> &str[src]

Returns a string slice.

Examples

let offset = TimeNumOffsetColonStr::from_str("-12:34")?;

assert_eq!(offset.as_str(), "-12:34");

#[must_use]pub fn as_bytes(&self) -> &[u8][src]

Returns a byte slice.

If you want to use indexed access, prefer as_bytes_fixed_len.

Examples

let offset = TimeNumOffsetColonStr::from_bytes(b"-12:34")?;

assert_eq!(offset.as_bytes(), b"-12:34");

#[must_use]pub fn as_bytes_fixed_len(&self) -> &[u8; 6][src]

Returns a fixed length byte slice.

Examples

let offset = TimeNumOffsetColonStr::from_str("-12:34")?;

let fixed_len: &[u8; 6] = offset.as_bytes_fixed_len();
assert_eq!(fixed_len, b"-12:34");

#[must_use]pub fn sign(&self) -> TimeOffsetSign[src]

Returns the time offset sign.

Examples

use datetime_string::common::TimeOffsetSign;

let positive = TimeNumOffsetColonStr::from_str("+12:34")?;
assert_eq!(positive.sign(), TimeOffsetSign::Positive);

let negative = TimeNumOffsetColonStr::from_str("-12:34")?;
assert_eq!(negative.sign(), TimeOffsetSign::Negative);

Note that signs are preserved for +00:00 and -00:00.

use datetime_string::common::TimeOffsetSign;

let positive0 = TimeNumOffsetColonStr::from_str("+00:00")?;
assert_eq!(positive0.sign(), TimeOffsetSign::Positive);

let negative0 = TimeNumOffsetColonStr::from_str("-00:00")?;
assert_eq!(negative0.sign(), TimeOffsetSign::Negative);

pub fn set_sign(&mut self, sign: TimeOffsetSign)[src]

Sets the given sign.

use datetime_string::common::TimeOffsetSign;

let mut buf = "-12:34".to_owned();
let offset = TimeNumOffsetColonStr::from_mut_str(&mut buf)?;
assert_eq!(offset.as_str(), "-12:34");
assert_eq!(offset.sign(), TimeOffsetSign::Negative);

offset.set_sign(TimeOffsetSign::Positive);
assert_eq!(offset.as_str(), "+12:34");
assert_eq!(offset.sign(), TimeOffsetSign::Positive);

#[must_use]pub fn hour_abs_str(&self) -> &str[src]

Returns the absolute hour as a string slice.

Examples

let offset = TimeNumOffsetColonStr::from_str("-12:34")?;

assert_eq!(offset.hour_abs_str(), "12");

#[must_use]pub fn hour_abs_bytes_fixed_len(&self) -> &[u8; 2][src]

Returns the absolute hour as a fixed length byte slice.

Examples

let offset = TimeNumOffsetColonStr::from_str("-12:34")?;

let hour_fixed_len: &[u8; 2] = offset.hour_abs_bytes_fixed_len();
assert_eq!(hour_fixed_len, b"12");

#[must_use]pub fn hour_abs(&self) -> u8[src]

Returns the absolute hour as an integer.

Examples

let offset = TimeNumOffsetColonStr::from_str("-12:34")?;

assert_eq!(offset.hour_abs(), 12);

pub fn set_hour_abs(&mut self, hour_abs: u8) -> Result<(), Error>[src]

Sets the given absolute hour value to the string.

Failures

  • Fails if the time after modification is invalid.

Examples

let mut buf: [u8; 6] = *b"-12:34";
let time = TimeNumOffsetColonStr::from_bytes_mut(&mut buf[..])?;
assert_eq!(time.as_str(), "-12:34");

time.set_hour_abs(0)?;
assert_eq!(time.as_str(), "-00:34");

assert!(time.set_hour_abs(24).is_err(), "-24:34 is invalid");

#[must_use]pub fn hour_signed_str(&self) -> &str[src]

Returns the signed hour as a string slice.

Examples

let offset = TimeNumOffsetColonStr::from_str("-12:34")?;

assert_eq!(offset.hour_signed_str(), "-12");

#[must_use]pub fn hour_signed_bytes_fixed_len(&self) -> &[u8; 3][src]

Returns the signed hour as a fixed length byte slice.

Examples

let offset = TimeNumOffsetColonStr::from_str("-12:34")?;

let hour_fixed_len: &[u8; 3] = offset.hour_signed_bytes_fixed_len();
assert_eq!(hour_fixed_len, b"-12");

#[must_use]pub fn hour_signed(&self) -> i8[src]

Returns the signed hour as an integer.

Examples

let offset = TimeNumOffsetColonStr::from_str("-12:34")?;

assert_eq!(offset.hour_signed(), -12);

Note that both +00 and -00 are treaded as the same 0.

let positive = TimeNumOffsetColonStr::from_str("+00:59")?;
assert_eq!(positive.hour_signed(), 0);

let negative = TimeNumOffsetColonStr::from_str("-00:59")?;
assert_eq!(negative.hour_signed(), 0);

pub fn set_sign_and_hour_abs(
    &mut self,
    sign: TimeOffsetSign,
    hour_abs: u8
) -> Result<(), Error>
[src]

Sets the given absolute hour value and sign to the string.

Failures

  • Fails if the time after modification is invalid.

Examples

use datetime_string::common::TimeOffsetSign;

let mut buf: [u8; 6] = *b"-12:34";
let time = TimeNumOffsetColonStr::from_bytes_mut(&mut buf[..])?;
assert_eq!(time.as_str(), "-12:34");

time.set_sign_and_hour_abs(TimeOffsetSign::Positive, 23)?;
assert_eq!(time.as_str(), "+23:34");

assert!(time.set_sign_and_hour_abs(TimeOffsetSign::Negative, 24).is_err(), "-24:34 is invalid");

pub fn set_hour_signed(&mut self, hour: i8) -> Result<(), Error>[src]

Sets the given signed hour value to the string.

If 0 is passed, it is always considered as positive 0.

Failures

  • Fails if the time after modification is invalid.

Examples

use datetime_string::common::TimeOffsetSign;

let mut buf: [u8; 6] = *b"-12:34";
let time = TimeNumOffsetColonStr::from_bytes_mut(&mut buf[..])?;
assert_eq!(time.as_str(), "-12:34");

time.set_hour_signed(0)?;
assert_eq!(time.as_str(), "+00:34");

time.set_hour_signed(-1)?;
assert_eq!(time.as_str(), "-01:34");

assert!(time.set_hour_signed(24).is_err(), "+24:34 is invalid");

#[must_use]pub fn minute_str(&self) -> &str[src]

Returns the minute as a string slice.

Examples

let offset = TimeNumOffsetColonStr::from_str("-12:34")?;

assert_eq!(offset.minute_str(), "34");

#[must_use]pub fn minute_bytes_fixed_len(&self) -> &[u8; 2][src]

Returns the minute as a fixed length byte slice.

Examples

let offset = TimeNumOffsetColonStr::from_str("-12:34")?;

let minute_fixed_len: &[u8; 2] = offset.minute_bytes_fixed_len();
assert_eq!(minute_fixed_len, b"34");

#[must_use]pub fn minute(&self) -> u8[src]

Returns the minute as an integer.

Examples

let offset = TimeNumOffsetColonStr::from_str("-12:34")?;

assert_eq!(offset.minute(), 34);

pub fn set_minute(&mut self, minute: u8) -> Result<(), Error>[src]

Sets the given minute value to the string.

Failures

  • Fails if the time after modification is invalid.

Examples

let mut buf: [u8; 6] = *b"-12:34";
let time = TimeNumOffsetColonStr::from_bytes_mut(&mut buf[..])?;
assert_eq!(time.as_str(), "-12:34");

time.set_minute(01)?;
assert_eq!(time.as_str(), "-12:01");

assert!(time.set_minute(60).is_err(), "-12:60 is invalid");

pub fn set_time_signed(&mut self, hour: i8, minute: u8) -> Result<(), Error>[src]

Sets the given signed hour and minute value to the string.

If 0 is passed, it is always considered as positive 0.

Failures

  • Fails if the time after modification is invalid.

Examples

use datetime_string::common::TimeOffsetSign;

let mut buf: [u8; 6] = *b"-12:34";
let time = TimeNumOffsetColonStr::from_bytes_mut(&mut buf[..])?;
assert_eq!(time.as_str(), "-12:34");

time.set_time_signed(0, 56)?;
assert_eq!(time.as_str(), "+00:56");

time.set_time_signed(-1, 23)?;
assert_eq!(time.as_str(), "-01:23");

assert!(time.set_time_signed(24, 00).is_err(), "+24:00 is invalid");

pub fn set_sign_and_time(
    &mut self,
    sign: TimeOffsetSign,
    hour_abs: u8,
    minute: u8
) -> Result<(), Error>
[src]

Sets the given sign, absolute hour, and minute value to the string.

If 0 is passed, it is always considered as positive 0.

Failures

  • Fails if the time after modification is invalid.

Examples

use datetime_string::common::TimeOffsetSign;

let mut buf: [u8; 6] = *b"-12:34";
let time = TimeNumOffsetColonStr::from_bytes_mut(&mut buf[..])?;
assert_eq!(time.as_str(), "-12:34");

time.set_sign_and_time(TimeOffsetSign::Negative, 0, 56)?;
assert_eq!(time.as_str(), "-00:56");

time.set_sign_and_time(TimeOffsetSign::Positive, 1, 23)?;
assert_eq!(time.as_str(), "+01:23");

assert!(time.set_sign_and_time(TimeOffsetSign::Positive, 24, 00).is_err(), "+24:00 is invalid");

#[must_use]pub fn in_minutes(&self) -> i16[src]

Returns the time offset in minutes.

Note that both +00:00 and -00:00 is considered as 0 minutes offset. RFC 3339 defines semantics of -00:00 as "unknown local offset". If your application should be aware of that semantics, use is_unknown_local_offset method or sign method to distinguish them.

Examples

let offset = TimeNumOffsetColonStr::from_str("-12:34")?;

assert_eq!(offset.in_minutes(), -(12 * 60 + 34));

0 is returned for both +00:00 and -00:00.

use datetime_string::common::TimeOffsetSign;

let positive0 = TimeNumOffsetColonStr::from_str("+00:00")?;
assert_eq!(positive0.in_minutes(), 0);
assert_eq!(positive0.sign(), TimeOffsetSign::Positive);
assert!(!positive0.is_unknown_local_offset(), "0 minutes time offset");

let negative0 = TimeNumOffsetColonStr::from_str("-00:00")?;
assert_eq!(negative0.in_minutes(), 0);
assert_eq!(negative0.sign(), TimeOffsetSign::Negative);
assert!(negative0.is_unknown_local_offset(), "unknown local offset");

pub fn set_in_minutes(&mut self, v: i16) -> Result<(), Error>[src]

Sets the time offset for the given offset in minutes.

Failures

  • Fails if the value is invalid as time offset, i.e. it is not between -1440 and 1440.

Examples

let mut buf: [u8; 6] = *b"-12:34";
let time = TimeNumOffsetColonStr::from_bytes_mut(&mut buf[..])?;
assert_eq!(time.as_str(), "-12:34");

time.set_in_minutes(9 * 60)?;
assert_eq!(time.as_str(), "+09:00");

time.set_in_minutes(0)?;
assert_eq!(time.as_str(), "+00:00");

assert!(time.set_in_minutes(-24 * 60).is_err(), "-24:00 is invalid");

#[must_use]pub fn is_unknown_local_offset(&self) -> bool[src]

Returns true if and only if the time offset means "unknown local offset" in RFC 3339.

RFC 3339 defines -00:00 as "unknown local offset".

If the time in UTC is known, but the offset to local time is unknown, this can be represented with an offset of "-00:00". This differs semantically from an offset of "Z" or "+00:00", which imply that UTC is the preferred reference point for the specified time.

--- RFC 3339, section 4.3. Unknown Local Offset Convention

This method returns true for -00:00.

Examples

use datetime_string::common::TimeOffsetSign;

let positive0 = TimeNumOffsetColonStr::from_str("+00:00")?;
assert!(!positive0.is_unknown_local_offset(), "0 minutes time offset");

let negative0 = TimeNumOffsetColonStr::from_str("-00:00")?;
assert!(negative0.is_unknown_local_offset(), "unknown local offset");

Trait Implementations

impl AsMut<TimeNumOffsetColonStr> for TimeNumOffsetColonStr[src]

impl AsMut<TimeNumOffsetColonStr> for TimeNumOffsetColonString[src]

impl AsRef<[u8]> for TimeNumOffsetColonStr[src]

impl AsRef<TimeNumOffsetColonStr> for TimeNumOffsetColonStr[src]

impl AsRef<TimeNumOffsetColonStr> for TimeNumOffsetColonString[src]

impl AsRef<str> for TimeNumOffsetColonStr[src]

impl Borrow<TimeNumOffsetColonStr> for TimeNumOffsetColonString[src]

impl BorrowMut<TimeNumOffsetColonStr> for TimeNumOffsetColonString[src]

impl Debug for TimeNumOffsetColonStr[src]

impl Deref for TimeNumOffsetColonStr[src]

type Target = str

The resulting type after dereferencing.

impl<'de> Deserialize<'de> for &'de TimeNumOffsetColonStr[src]

impl Display for TimeNumOffsetColonStr[src]

impl Eq for TimeNumOffsetColonStr[src]

impl<'_> From<&'_ TimeNumOffsetColonStr> for FixedOffset[src]

impl<'_> From<&'_ TimeNumOffsetColonStr> for TimeNumOffsetColonString[src]

impl<'_> From<&'_ TimeNumOffsetColonStr> for TimeOffsetString[src]

impl<'a> From<&'a TimeNumOffsetColonStr> for &'a str[src]

impl Hash for TimeNumOffsetColonStr[src]

impl Ord for TimeNumOffsetColonStr[src]

impl<'_> PartialEq<&'_ [u8]> for TimeNumOffsetColonStr[src]

impl<'_> PartialEq<&'_ TimeNumOffsetColonStr> for TimeNumOffsetColonStr[src]

impl<'_> PartialEq<&'_ TimeNumOffsetColonStr> for [u8][src]

impl<'_> PartialEq<&'_ TimeNumOffsetColonStr> for str[src]

impl<'_> PartialEq<&'_ TimeNumOffsetColonStr> for TimeNumOffsetColonString[src]

impl<'_> PartialEq<&'_ str> for TimeNumOffsetColonStr[src]

impl PartialEq<[u8]> for TimeNumOffsetColonStr[src]

impl<'_> PartialEq<[u8]> for &'_ TimeNumOffsetColonStr[src]

impl PartialEq<TimeNumOffsetColonStr> for TimeNumOffsetColonStr[src]

impl<'_> PartialEq<TimeNumOffsetColonStr> for &'_ TimeNumOffsetColonStr[src]

impl PartialEq<TimeNumOffsetColonStr> for [u8][src]

impl<'_> PartialEq<TimeNumOffsetColonStr> for &'_ [u8][src]

impl PartialEq<TimeNumOffsetColonStr> for str[src]

impl<'_> PartialEq<TimeNumOffsetColonStr> for &'_ str[src]

impl PartialEq<TimeNumOffsetColonStr> for TimeNumOffsetColonString[src]

impl PartialEq<TimeNumOffsetColonString> for TimeNumOffsetColonStr[src]

impl<'_> PartialEq<TimeNumOffsetColonString> for &'_ TimeNumOffsetColonStr[src]

impl PartialEq<str> for TimeNumOffsetColonStr[src]

impl<'_> PartialEq<str> for &'_ TimeNumOffsetColonStr[src]

impl<'_> PartialOrd<&'_ [u8]> for TimeNumOffsetColonStr[src]

impl<'_> PartialOrd<&'_ TimeNumOffsetColonStr> for TimeNumOffsetColonStr[src]

impl<'_> PartialOrd<&'_ TimeNumOffsetColonStr> for [u8][src]

impl<'_> PartialOrd<&'_ TimeNumOffsetColonStr> for str[src]

impl<'_> PartialOrd<&'_ TimeNumOffsetColonStr> for TimeNumOffsetColonString[src]

impl<'_> PartialOrd<&'_ str> for TimeNumOffsetColonStr[src]

impl PartialOrd<[u8]> for TimeNumOffsetColonStr[src]

impl<'_> PartialOrd<[u8]> for &'_ TimeNumOffsetColonStr[src]

impl PartialOrd<TimeNumOffsetColonStr> for TimeNumOffsetColonStr[src]

impl<'_> PartialOrd<TimeNumOffsetColonStr> for &'_ TimeNumOffsetColonStr[src]

impl PartialOrd<TimeNumOffsetColonStr> for [u8][src]

impl<'_> PartialOrd<TimeNumOffsetColonStr> for &'_ [u8][src]

impl PartialOrd<TimeNumOffsetColonStr> for str[src]

impl<'_> PartialOrd<TimeNumOffsetColonStr> for &'_ str[src]

impl PartialOrd<TimeNumOffsetColonStr> for TimeNumOffsetColonString[src]

impl PartialOrd<TimeNumOffsetColonString> for TimeNumOffsetColonStr[src]

impl<'_> PartialOrd<TimeNumOffsetColonString> for &'_ TimeNumOffsetColonStr[src]

impl PartialOrd<str> for TimeNumOffsetColonStr[src]

impl<'_> PartialOrd<str> for &'_ TimeNumOffsetColonStr[src]

impl Serialize for TimeNumOffsetColonStr[src]

impl StructuralEq for TimeNumOffsetColonStr[src]

impl StructuralPartialEq for TimeNumOffsetColonStr[src]

impl ToOwned for TimeNumOffsetColonStr[src]

type Owned = TimeNumOffsetColonString

The resulting type after obtaining ownership.

impl<'a> TryFrom<&'a [u8]> for &'a TimeNumOffsetColonStr[src]

type Error = Error

The type returned in the event of a conversion error.

impl<'a> TryFrom<&'a mut [u8]> for &'a mut TimeNumOffsetColonStr[src]

type Error = Error

The type returned in the event of a conversion error.

impl<'a> TryFrom<&'a mut str> for &'a mut TimeNumOffsetColonStr[src]

type Error = Error

The type returned in the event of a conversion error.

impl<'a> TryFrom<&'a str> for &'a TimeNumOffsetColonStr[src]

type Error = Error

The type returned in the event of a conversion error.

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T> ToString for T where
    T: Display + ?Sized
[src]