Skip to content
项目

google/mug has 539 GitHub stars and 91 forks. GitHot measured +1 stars in 24 hours. Last checked 2026-11-11 13:39 UTC. Last push 2026-11-05.

这些数字如何统计

A small Java 8 library (string manipulation, BiStream, Structured Concurrency, SQL Templates)

539 星标91 forks +1 24小时

实测星标增长

24小时
+1
7天
更新延迟
15天
更新延迟
1个月
更新延迟

各周期内的星标净变化,周期相互重叠,并非每日新增。缺失的测量保持空白。星标代表关注度,不代表软件质量。

README.md

原文

Disclaimer: This is not an official Google product.

Mug (Coverage)

A small Java 8+ string processing and streams library (javadoc), battle tested in Google's internal codebase, with 0 deps (Proto, BigQuery, Guava addons are in separate artifacts).

Strings

  • ✅ Substring – simple and composable substring extraction & manipulation
    → Substring.between("(", ")").from("call(foo)") → "foo"
  • ✅ StringFormat – compile-time-safe bidirectional parsing/formatting
    → new StringFormat("/home/{user}/{date}").parse(filePath, (user, date) -> ...)
  • ✅ Parser – everyday string parsing easier, faster and beyond regex
    sequence(word().followedBy("="), digits(), Map::entry)
        .zeroOrMoreDelimitedBy(",")
        .between("{", "}")         // {k1=100, k2=200, k3=300, ...}
        .parseSkipping(Character::isWhitespace, input);
    
  • DateTimeFormats – define datetime formats by examples
    → DateTimeFormatter format = formatOf("2024-03-14 11.00:00.123 America/New_York")

Streams

  • ✅ BiStream – streams Map and pair-wise collections
    → BiStream.zip(keys, values).toMap()
  • ✅ MoreStreams – extra stream utilities
    Stream<List<Double>> greenDays = MoreStreams.groupConsecutive(
        stockPrices, (p1, p2) -> p1 <= p2, toUnmodifiableList());
    

Compile-Time Guardrails

  • ✅ @ParametersMustMatchByNamerecord Profile(String userId, String userName) {}
    • new Profile(user.id(), user.name()) Compiles ✅
    • new Profile(user.name(), user.id()) Does Not Compile ❌
  • ✅ SafeSql – compile-time-enforced safe, composable SQL template
    → SafeSql.of("select id, `{col}` from Users where id = {id}", col, id)
More tools
  • Iteration - implement lazy stream with recursive code
  • BinarySearch - solve LeetCode binary search problems
    → BinarySearch.inSortedArrayWithTolerance(doubleArray, 0.0001).find(target)
  • StructuredConcurrency - simple structured concurrency on virtual threads
    → concurrently(() -> fetchArm(), () -> fetchLeg(), (arm, leg) -> makeRobot(arm, leg))
  • Optionals
    → return optionally(obj.hasFoo(), obj::getFoo);
Installation
Maven

Add the following to pom.xml:

  <dependency>
    <groupId>com.google.mug</groupId>
    <artifactId>mug</artifactId>
    <version>11.2</version>
  </dependency>

Add mug-errorprone to your annotationProcessorPaths:

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <configuration>
            <annotationProcessorPaths>
              <path>
                <groupId>com.google.errorprone</groupId>
                <artifactId>error_prone_core</artifactId>
                <version>2.23.0</version>
              </path>
              <path>
                <groupId>com.google.mug</groupId>
                <artifactId>mug-errorprone</artifactId>
                <version>11.2</version>
              </path>
            </annotationProcessorPaths>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

SafeSql (javadoc):

  <dependency>
    <groupId>com.google.mug</groupId>
    <artifactId>mug-safesql</artifactId>
    <version>11.2</version>
  </dependency>

Dot Parse Combinators (javadoc):

  <dependency>
    <groupId>com.google.mug</groupId>
    <artifactId>dot-parse</artifactId>
    <version>11.2</version>
  </dependency>

Protobuf utils (javadoc):

  <dependency>
    <groupId>com.google.mug</groupId>
    <artifactId>mug-protobuf</artifactId>
    <version>11.2</version>
  </dependency>
Gradle

Add to build.gradle:

  implementation 'com.google.mug:mug:11.2'
  implementation 'com.google.mug:mug-safesql:11.2'
  implementation 'com.google.mug:dot-parse:11.2'
  implementation 'com.google.mug:mug-guava:11.2'
  implementation 'com.google.mug:mug-protobuf:11.2'

探索相关项目