Crate simple_duration

Source
Expand description

§simple_duration

simple_duration is a crate that provides a “simple and minimal dependency” second-precision Duration type for Rust. It’s optimized for everyday “hours, minutes, seconds” handling and embedded environments (no_std).

§Features

  • Simple time representation in seconds: Specialized for use cases that don’t require high precision like milliseconds or nanoseconds
  • Intuitive creation and formatting: Easy creation from hours/minutes/seconds and conversion to "hh:mm:ss" format strings
  • String parsing support: Can create Duration objects from "hh:mm:ss" format strings
  • Addition and subtraction operations: Duration objects can be added and subtracted (results never become negative)
  • SystemTime integration: Can create Duration from two SystemTime instances (when std feature is enabled)
  • no_std support & minimal dependencies: Safe to use in embedded projects or projects that want to minimize dependencies
  • Safe error handling: Failures like string parsing return explicit errors via Option/Result without panicking

§Usage Examples

use simple_duration::Duration;

// Create from hours, minutes, seconds
let duration = Duration::from_hms(1, 30, 45); // 1 hour 30 minutes 45 seconds

// Create from hours
let duration = Duration::from_hours(2); // 2 hours

// Create from minutes
let duration = Duration::from_minutes(90); // 90 minutes (1 hour 30 minutes)

// Create from seconds
let duration = Duration::from_seconds(3661); // 1 hour 1 minute 1 second

// Create from string
let duration = Duration::parse("01:30:45").unwrap();

// Format
assert_eq!(duration.format(), "01:30:45");

// Get total amounts in each unit
assert_eq!(duration.as_seconds(), 5445);
assert_eq!(duration.as_minutes(), 90); // 90 minutes
assert_eq!(duration.as_hours(), 1); // 1 hour (truncated)

// Get each component (in h:m:s format)
assert_eq!(duration.seconds_part(), 45); // seconds component (0-59)
assert_eq!(duration.minutes_part(), 30);   // minutes component (0-59)
assert_eq!(duration.hours_part(), 1);      // hours component

// Arithmetic operations
let d1 = Duration::from_seconds(100);
let d2 = Duration::from_seconds(50);
let sum = d1 + d2; // 150 seconds
let diff = d1 - d2; // 50 seconds

Structs§

Duration
Simple Duration type with second precision

Enums§

DurationError
Possible errors that can occur during Duration operations