A Rust-based Statistics and ML package, callable from Python.
Project description
RustMFX
Introduction
RustMFX is a high-performance Rust package for computing marginal effects (MEs) in binary choice models (Logit and Probit).
As datasets in economics, social sciences, and data science continue to grow in size and complexity, traditional tools (like statsmodels) can struggle with speed and memory efficiency.
RustMFX leverages Rust’s efficiency and safety to deliver fast and memory-friendly computations of average marginal effects (AMEs) and their standard errors (SEs).
1. Introduction
In today's data-driven world, researchers and practitioners are faced with increasingly massive datasets.
In fields such as economics, social sciences, and data science, analyzing high-dimensional data efficiently is critical.
While libraries like statsmodels provide robust statistical tools, they can be limited by the speed and memory constraints of Python when handling large datasets.
RustMFX was designed to overcome these challenges by using Rust—a language known for its high performance and low memory overhead—to compute marginal effects quickly and reliably.
2. Speed and Memory Efficiency
RustMFX outperforms Python-based statsmodels in several key areas:
Efficient Vectorization & Low-Level Optimizations
The Rust code leverages libraries like ndarray (using a BLAS backend) to perform operations in a highly optimized, vectorized manner.
This means calculations are executed on entire matrices at once, rather than iterating over rows with loops.
This eliminates costly Python-level loops, allowing computations to be performed in a fraction of the time.
Loop-Based Computation in statsmodels
statsmodels.get_margeff()uses explicit Python loops in places where RustMFX performs fully vectorized operations.- For continuous variables,
statsmodelsiterates over observations to compute marginal effects, while RustMFX applies matrix operations across the entire dataset in one step. - For discrete variables,
statsmodelsloops over each discrete feature, recomputing probabilities for every observation twice (once forX=0, once forX=1).
In contrast, RustMFX batch-computes these changes in a single matrix operation.
Memory Efficiency & In-Place Computation
Rust’s strict memory management and zero-cost abstractions help keep memory overhead low.
- RustMFX reuses memory and avoids large temporary allocations, ensuring that memory usage scales efficiently with increasing variables.
statsmodels.get_margeff()creates multiple intermediate arrays, whose sizes grow significantly as the number of variables $K$ increases.
This leads to exponential memory growth instatsmodels, whereas RustMFX remains efficient even at large scales.
Compiled vs. Interpreted Code
Rust is a compiled language with aggressive optimizations by LLVM, while statsmodels is written in Python (using NumPy for vectorization).
Although NumPy is optimized for array computations, Python’s dynamic memory management and interpreted nature introduce overhead,
especially when handling large models with many variables.
Why RustMFX Scales Better
✔ Fully vectorized operations eliminate Python loops for both continuous and discrete marginal effects.
✔ Lower memory footprint by avoiding large temporary allocations and using in-place computation.
✔ Efficient discrete variable handling batch-computes discrete effects instead of looping over them.
✔ Scales efficiently with increasing $K$, whereas statsmodels.get_margeff() suffers from excessive memory usage.
These features make RustMFX an ideal choice for analyzing large-scale data quickly, efficiently, and with minimal memory overhead.
3. Comparison: Statsmodels-Style vs. Rust Method
RustMFX provides two methods for calculating standard errors of the marginal effects:
Rust Method ("rust")
- Description:
This method calculates the gradient (Jacobian) of the marginal effects with respect to the coefficients by averaging the individual observation-level gradients. - Benefits:
Captures detailed individual-level variability, which is beneficial when data heterogeneity is significant. Closer to the way Stata calculates Standard Errors. - Use Cases:
Best used in applications where capturing the nuances of individual effects is crucial.
Statsmodels-Style Method ("sm")
- Description:
This approach computes the derivative of the predicted probabilities with respect to the coefficients and then averages this derivative over all observations. - Benefits:
Produces smoother and often more stable SE estimates, especially useful in smaller samples. - Use Cases:
Preferred when consistency with traditionalstatsmodelsoutput is desired or when more stable SE estimates are needed.
4. Methodology: Calculating Marginal Effects and Standard Errors
RustMFX calculates Average Marginal Effects (AMEs) and uses the delta method to compute standard errors.
Marginal Effects Calculation
For a given observation $i$ and variable $j$, the marginal effect is:
$\frac{\partial P(Y=1 \mid \text{X}_i)}{\partial \text{X}_{ij}} = \beta_j \times f(\text{X}_i \beta)$
where:
-
$\beta_j$ is the coefficient for variable $j$,
-
$f(\cdot)$ is the probability density function (PDF):
- Logit:
- Probit:
The Average Marginal Effect (AME) is computed by averaging over all $N$ observations:
Standard Errors Calculation
Using the delta method, the variance of the AME is calculated as:
where $\text{J}$ is the Jacobian matrix of the transformation from coefficients to marginal effects. The Jacobian is computed differently depending on the method:
- Rust Method:
$\text{J}_{\text{rust}} = \frac{1}{N} \sum_{i=1}^{N} \frac{\partial \left( \beta_j f(\text{X}_i \beta) \right)}{\partial \beta}$
Explanation:
- This method computes the Jacobian by taking the derivative of the marginal effects function for each individual observation.
- The gradient is first computed at the observation level and then averaged over all $N$ observations.
- This approach captures individual-level variability in marginal effects more accurately.
- The partial derivative term represents how a small change in $\beta$ affects the probability distribution function $f(\text{X}_i \beta)$.
- Closer to how Stata computes standard errors and more sensitive to variations across observations.
✅ Why Use This Method?
✔ More precise in heterogeneous datasets (e.g., large-scale social science or labor market studies).
✔ Preserves individual-level variability rather than smoothing it out.
✔ Better for large datasets where heterogeneity matters.
- Statsmodels-Style Method:
Explanation:
- Instead of differentiating at the individual level, this method computes the derivative of the predicted probability function with respect to $\beta$, then averages over all observations.
- The term $\text{X}_i$ represents the independent variable values for observation $i$, and it is multiplied by the PDF $f(\text{X}_i \beta)$.
- This method smooths out variability across observations, leading to more stable standard error estimates.
- While slightly less precise at the individual level, it is computationally simpler and produces standard errors identical to
statsmodels.
✅ Why Use This Method?
✔ Produces more stable standard errors, especially in small samples.
✔ Ensures consistency with traditional statsmodels outputs.
✔ Useful when a more aggregated (less individual-specific) marginal effect estimate is preferred.
These approaches allow you to choose the estimation method that best fits your application needs.
Handling of Continuous vs. Discrete Variables
RustMFX distinguishes between continuous and discrete variables when computing marginal effects and their standard errors (in an identical way to sm.get_margeff()):
- Continuous Variables:
For a continuous variable $\text{X}_j$, the marginal effect is computed as:
$\frac{\partial P(Y=1 \mid \text{X}_i)}{\partial \text{X}_{ij}} = \beta_j \times f(\text{X}_i \beta)$
This formula directly measures how a small change in $\text{X}_j$ affects the probability $\text{P}(Y=1)$. The associated Jacobian and standard errors are calculated using the derivative of this expression.
- Discrete Variables:
For a discrete (binary) variable $\text{X}_j$, the marginal effect is computed using a finite-difference approach:
Rather than using a derivative (which isn't defined for variables that only take two values), this method measures the change in the predicted probability when the variable switches from 0 to 1.
The gradient for discrete variables is computed by comparing the probability densities for both states, ensuring that the binary nature of the variable is appropriately handled.
5. How to Use RustMFX
Below is an example of how to integrate RustMFX into your workflow. First install rustmfx on your system.
pip install rustmfx
Here we will construct a dataset using make_classification from the sklearn library. Then we fit sm.Probit and sm.Logit models.
Note:
- It is important that
yandXfed to thesm.{Model}(y,X).fit()function arepandas.DataFrametype, as this will result in the output objects being DFs, which is required byrustmfx.mfx(). - Column names must also be strings/non-numeric.
import numpy as np
import pandas as pd
import statsmodels.api as sm
from sklearn.datasets import make_classification
# Import RustMFX
import rustmfx
# Number of rows
nobs = 1_000_000
# Define feature counts
num_continuous = 4
num_dummy = 4
num_features = num_continuous + num_dummy
# Randomly decide how many variables should be predictive
num_informative = np.random.randint(1, num_features + 1) # At least 1 variable is predictive
# Generate dataset with random informative variables
X, y = make_classification(
n_samples=nobs,
n_features=num_features,
n_informative=num_informative, # Randomly chosen number of informative variables
n_redundant=0,
n_classes=2,
random_state=42
)
# Convert to Pandas DataFrame with proper naming
continuous_names = [f"continuous_{i+1}" for i in range(num_continuous)]
dummy_names = [f"dummy_{i+1}" for i in range(num_dummy)]
column_names = continuous_names + dummy_names
X = pd.DataFrame(X, columns=column_names)
y = pd.DataFrame(y, columns=["outcome"])
# Convert last 4 columns (dummy variables) into 0/1 binary variables
X[dummy_names] = (X[dummy_names] > X[dummy_names].median()).astype(int)
# Add intercept column
X = sm.add_constant(X)
# Fit Logit and Probit models using Statsmodels
results_probit = sm.Probit(y, X).fit(disp=0)
results_logit = sm.Logit(y, X).fit(disp=0)
Below we run rustmfx.mfx() on the Probit model. se_method defaults to "rust".
This produces a pandas.DataFrame object with:
variable names;
dy/dx (average marginal effects);
Standard Errors;
z score;
p-values;
95% confidence interval;
Significance level (* = p<0.1, ** = p<0.05, *** = p<0.01).
# get marginal effects for Probit model using rustmfx.mfx()
# By default, <option: se_method='rust'>
rustmfx.mfx(results_probit)
Output:
| | dy/dx | Std. Err | z | Pr(>|z|) | Conf. Int. Low | Conf. Int. Hi | Significance |
|:-------------|-------------:|------------:|------------:|-----------:|-----------------:|----------------:|:---------------|
| continuous_1 | -0.000711967 | 0.000429515 | -1.65761 | 0.0973968 | -0.00155382 | 0.000129882 | * |
| continuous_2 | 0.000143285 | 0.000429703 | 0.333452 | 0.738793 | -0.000698933 | 0.000985503 | |
| continuous_3 | 0.132766 | 0.000325385 | 408.028 | 0 | 0.132128 | 0.133404 | *** |
| continuous_4 | 0.000172238 | 0.000429776 | 0.400763 | 0.688595 | -0.000670123 | 0.0010146 | |
| dummy_1 | -0.144887 | 0.000853498 | -169.757 | 0 | -0.14656 | -0.143214 | *** |
| dummy_2 | 0.355616 | 0.000853642 | 416.586 | 0 | 0.353943 | 0.357289 | *** |
| dummy_3 | -0.000114508 | 0.000858866 | -0.133325 | 0.893936 | -0.00179789 | 0.00156887 | |
| dummy_4 | 0.193636 | 0.000841226 | 230.183 | 0 | 0.191987 | 0.195285 | *** |
This time we run .mfx() on the Logit model.
The .mfx() function automatically detects if the sm.{Model}(y,X).fit() is Probit or Logit by extracting {Model}.model.__class__.__name__
Here I set se_method='sm' to mimic statsmodel's method for getting standard errors.
# get marginal effects for Logit model using rustmfx.mfx()
# Use <option: se_method='sm'> instead. This will produce SE identical to sm.get_margeff()
rustmfx.mfx(results_logit, se_method='sm')
Output:
| | dy/dx | Std. Err | z | Pr(>|z|) | Conf. Int. Low | Conf. Int. Hi | Significance |
|:-------------|-------------:|------------:|-------------:|-----------:|-----------------:|----------------:|:---------------|
| continuous_1 | -0.000727353 | 0.000429072 | -1.69518 | 0.0900422 | -0.00156833 | 0.000113629 | * |
| continuous_2 | 0.000160417 | 0.000429249 | 0.373717 | 0.708615 | -0.00068091 | 0.00100174 | |
| continuous_3 | 0.133292 | 0.000259576 | 513.501 | 0 | 0.132784 | 0.133801 | *** |
| continuous_4 | 0.000194787 | 0.000429317 | 0.453715 | 0.650034 | -0.000646674 | 0.00103625 | |
| dummy_1 | -0.152622 | 0.00085115 | -179.313 | 0 | -0.15429 | -0.150954 | *** |
| dummy_2 | 0.355251 | 0.000852706 | 416.616 | 0 | 0.35358 | 0.356923 | *** |
| dummy_3 | -8.12991e-05 | 0.000857946 | -0.0947601 | 0.924505 | -0.00176287 | 0.00160027 | |
| dummy_4 | 0.194628 | 0.000837786 | 232.313 | 0 | 0.192986 | 0.19627 | *** |
Accounting for Robust SE, Clustered SE, and Weights
One of the key advantages of RustMFX is that it automatically uses the model’s covariance matrix—obtained via the cov_params() method from the statsmodels fit object—in the delta method to compute the standard errors of the marginal effects.
What does this mean for you?
If you fit your model with additional parameters such as robust standard errors, clustered standard errors, or observation weights (for example, by using options like cov_type='HC0', cov_kwds={'groups': clusters}, or specifying weights), these adjustments will be captured in the covariance matrix output of your sm.{Model}(y, X).fit() call.
For instance, if you fit a Probit model with robust standard errors:
results = sm.Probit(y, X).fit(cov_type='HC0')
Then call
mfx_results = rustmfx.mfx(results)
RustMFX will automatically extract and use the robust covariance matrix in the marginal effects calculations. In other words, as long as these parameters (robust SE, clustered SE, weights, etc.) are specified in your ``statsmodels .fit()```, the ```.mfx()``` function will automatically account for them.
This integration ensures that your marginal effects and their standard errors reflect any adjustments made during model fitting, providing you with accurate and reliable inference.
Performance Comparison between .mfx() and .get_margeff()
Below is a graph showing the difference in peak memory usage of .mfx() and .get_margeff() across datasets of differing number of observations $N$ and degrees of freedom (number of parameters) $k$.
RustMFX performs exponentially better than statsmodels as the number of parameters increases.
Contributing
Contributions are welcome! Feel free to submit issues and pull requests on GitHub.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rustmfx-0.1.4.tar.gz.
File metadata
- Download URL: rustmfx-0.1.4.tar.gz
- Upload date:
- Size: 122.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.8.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f378c70921aba16a3d09f41b04f48a680163d50c6efd54df7ab3ae23f7c8706c
|
|
| MD5 |
425152d14d065a4c4f010d99c339ed98
|
|
| BLAKE2b-256 |
62f9ba0bc11fd65641f4c1a483aae6c6dc0038b40fd6c2048bac7b3f8fb9a074
|
File details
Details for the file rustmfx-0.1.4-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: rustmfx-0.1.4-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 1.0 MB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.8.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
efa1395d176499b3edc5fa1d7b1eb59c1fd7dea894568341416f9dd61efac6fb
|
|
| MD5 |
8ccbb3a3e42e15fbc1629e60ca1b2a14
|
|
| BLAKE2b-256 |
31866f4014caa2cd7ca30f9f363ccc2de45cf8a73684da6c37b6ab6ccc816a66
|
File details
Details for the file rustmfx-0.1.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: rustmfx-0.1.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 309.3 kB
- Tags: CPython 3.13, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.8.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
816df6c6884e0febe8adc4a836c134391308281ff5d142faed20f2617ef2522f
|
|
| MD5 |
37fb8b8505560ba2b9915e700d8e43b5
|
|
| BLAKE2b-256 |
8ae74ceb7480a3700d36b0a5af114281cb8574f4d95ad6282809fa546121fdb8
|
File details
Details for the file rustmfx-0.1.4-cp313-cp313-macosx_11_0_arm64.whl.
File metadata
- Download URL: rustmfx-0.1.4-cp313-cp313-macosx_11_0_arm64.whl
- Upload date:
- Size: 260.7 kB
- Tags: CPython 3.13, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.8.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fde438d461c0881c2f7aa5383df08303115eb90f6b022ce29581a88c079192a1
|
|
| MD5 |
b92b6330b0e64edf113d4932a0bcf118
|
|
| BLAKE2b-256 |
a74b2aa7884e6f0fbdba3c1d3a717ac039738909764f1229f4c2b5abe6c16b0e
|
File details
Details for the file rustmfx-0.1.4-cp313-cp313-macosx_10_12_x86_64.whl.
File metadata
- Download URL: rustmfx-0.1.4-cp313-cp313-macosx_10_12_x86_64.whl
- Upload date:
- Size: 279.3 kB
- Tags: CPython 3.13, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.8.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
987a8ece6e7cbaf0d7d022f281f9cf1de6497ffb91a29723d1b82696fecc82f2
|
|
| MD5 |
472a23c6c272df521be1b1792341f31c
|
|
| BLAKE2b-256 |
5835822dae258ef5d4c44f6c5a97603110d6dbbc9aef731afa328dca4719efdd
|
File details
Details for the file rustmfx-0.1.4-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: rustmfx-0.1.4-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 1.0 MB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.8.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1562c40f00b29d46ddb6b1f014e8a9903a837ff58474a16713c083c9ad67167f
|
|
| MD5 |
77ceec73c821de0b1d342325c71a848f
|
|
| BLAKE2b-256 |
f689d208e0d0496e29420fa0276442213dbb76604d58ad35144644bd6264fbf7
|
File details
Details for the file rustmfx-0.1.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: rustmfx-0.1.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 309.3 kB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.8.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
89a1b2b62d9a38b1d2d963a745ea5c3e2b9b51c79740383ca52013d44d343ac8
|
|
| MD5 |
f50829f317c0bf4d80cc4d5601848d74
|
|
| BLAKE2b-256 |
f7cd16291c7f43fb2fba4e00788a9fa0ed877e4b5d445a46ded6d8e281f7ab15
|
File details
Details for the file rustmfx-0.1.4-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: rustmfx-0.1.4-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 260.7 kB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.8.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7811b064412f71b366959ba38d743ccf5b201ffadbeff89b376be016ecc275b4
|
|
| MD5 |
8759ffc15a1b5069b12b4912cb2f3e22
|
|
| BLAKE2b-256 |
2f92a4c5d8ff551fa07325075386cd34c91ece96a50c65c2b6ec064572ed01f6
|
File details
Details for the file rustmfx-0.1.4-cp312-cp312-macosx_10_12_x86_64.whl.
File metadata
- Download URL: rustmfx-0.1.4-cp312-cp312-macosx_10_12_x86_64.whl
- Upload date:
- Size: 279.3 kB
- Tags: CPython 3.12, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.8.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ad281c4fa29428c353405e8c33fbdc806d1ee1850ccd654183d51220138359d2
|
|
| MD5 |
c07c1b10466973a7308badda78e57ff3
|
|
| BLAKE2b-256 |
f017f365d3846b0d36368ad62b2f2dde11688a25fe4e07e94e91e44f7b7fffb7
|
File details
Details for the file rustmfx-0.1.4-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: rustmfx-0.1.4-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 1.0 MB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.8.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f2ea1cf3b610fef5ce884ddf30456a0ed3ea6a65f3da31fc9c63fda10d8f9e5e
|
|
| MD5 |
9bd8ad3dc4c215f25ff85695cf1b465c
|
|
| BLAKE2b-256 |
9f5532ecafaa07b92f2cb59dfd2c554d8f6bb92144bbea479547cc782859bb5c
|
File details
Details for the file rustmfx-0.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: rustmfx-0.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 309.1 kB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.8.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
87d49cf7b2ce4d7f02acfb88286513ed0b84e0fdf14a58ab86dc2623407b3cc3
|
|
| MD5 |
a59e93e2236341a5dd58ea27cf8049ee
|
|
| BLAKE2b-256 |
fc814e48c9035186e3fcde881e68d262c2fe5c6f7855f33375c0ee0fdb3fea59
|
File details
Details for the file rustmfx-0.1.4-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: rustmfx-0.1.4-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 260.7 kB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.8.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
196ca0c7981a93a13eb39d6913c22ac63f898f060f38e1b84d8e1a1e246fd672
|
|
| MD5 |
19bb1ffae53174e84027bda226d1708a
|
|
| BLAKE2b-256 |
ec96cf256beb6be75d6b496aef1cde73560defb64cf46d613edf3e6c5844f557
|
File details
Details for the file rustmfx-0.1.4-cp311-cp311-macosx_10_12_x86_64.whl.
File metadata
- Download URL: rustmfx-0.1.4-cp311-cp311-macosx_10_12_x86_64.whl
- Upload date:
- Size: 279.3 kB
- Tags: CPython 3.11, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.8.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c9c0142ff73fcc24589edde06b9cc98945ecd8f3710df214ed4711c7b7f7c3a0
|
|
| MD5 |
85f98ed910fcce3f0e49cfd2f96f8280
|
|
| BLAKE2b-256 |
dd18d435e9be909d3e7ae11dd23ca77611bd999c31e5debf3327148a56003684
|
File details
Details for the file rustmfx-0.1.4-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: rustmfx-0.1.4-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 1.0 MB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.8.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eec3e00112ae2ce525d6a9705821c6016a8eaafa6ea35cf811643f18f202c5d5
|
|
| MD5 |
541d7001e67e9a9016c249b2be6f6b30
|
|
| BLAKE2b-256 |
7f0be7d7be451fb29615e7934002370d2cedd132707ae05c981c5e1788f724b4
|
File details
Details for the file rustmfx-0.1.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: rustmfx-0.1.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 309.1 kB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.8.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
333d59229076591b1c5b49c5ca7b9e3d81d587fbfbdae543ec5d52558e9a0b25
|
|
| MD5 |
3309e5347d3d5e85eb5088d1334ac9da
|
|
| BLAKE2b-256 |
d12f5fb3ff3140953d8000f218db9ae56ffba2bacbc65a5e1a3e62c5a0d9a181
|
File details
Details for the file rustmfx-0.1.4-cp310-cp310-macosx_11_0_arm64.whl.
File metadata
- Download URL: rustmfx-0.1.4-cp310-cp310-macosx_11_0_arm64.whl
- Upload date:
- Size: 260.7 kB
- Tags: CPython 3.10, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.8.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
486494c7cdd56c5d18bcef5997721728fccdb0e06eadc49120cc5e2d197373b1
|
|
| MD5 |
3c9c3a51aff2487f28d55b8361e7f53c
|
|
| BLAKE2b-256 |
dd390a40b00cf8edbf89aef86cf0a2b30525be162e29a304701827b93e754dab
|
File details
Details for the file rustmfx-0.1.4-cp310-cp310-macosx_10_12_x86_64.whl.
File metadata
- Download URL: rustmfx-0.1.4-cp310-cp310-macosx_10_12_x86_64.whl
- Upload date:
- Size: 279.3 kB
- Tags: CPython 3.10, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.8.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e7534c7cd084d04caa4201805b708abdfe2c1ba2997dcb873eb58a2681c2c943
|
|
| MD5 |
74bc85adeb5bbe4f0a04b271ced4ff1e
|
|
| BLAKE2b-256 |
d17902f3cfd4c1a13b27ede0b2d6942659e12487d5685a090922a4309131519a
|
File details
Details for the file rustmfx-0.1.4-cp39-cp39-win_amd64.whl.
File metadata
- Download URL: rustmfx-0.1.4-cp39-cp39-win_amd64.whl
- Upload date:
- Size: 1.0 MB
- Tags: CPython 3.9, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.8.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b6ed050197c51f1413b32def6de3c4d2b57e7f60a384826582446d28c3f04bca
|
|
| MD5 |
09ec631eb3427a2c1a37012d04aa08b2
|
|
| BLAKE2b-256 |
d00c24364bb1df7b9013f13fe7833d9a529624f8dc58153576e3820600f10c7f
|
File details
Details for the file rustmfx-0.1.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: rustmfx-0.1.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 309.3 kB
- Tags: CPython 3.9, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.8.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9b53e40bba59a51385c1d1736143f3a97fd67e7eb77ec98428ce7a12d8f41647
|
|
| MD5 |
1a085dd218ec9dec88874beaab55e360
|
|
| BLAKE2b-256 |
e3e90bca78f1b8ac83847b6c1f780c70fd277abc4c23635aa8c936ff34d545d0
|
File details
Details for the file rustmfx-0.1.4-cp39-cp39-macosx_11_0_arm64.whl.
File metadata
- Download URL: rustmfx-0.1.4-cp39-cp39-macosx_11_0_arm64.whl
- Upload date:
- Size: 260.6 kB
- Tags: CPython 3.9, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.8.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3649698f74ae165a7ce46709054615d89dd782c6192cccc6dda126a59c749cea
|
|
| MD5 |
258adf98b9395282611e1dd6225acf8b
|
|
| BLAKE2b-256 |
4841abe2922ca0fc8523178d57ae008f9069aed01a2568edfe973bb151ed9561
|
File details
Details for the file rustmfx-0.1.4-cp39-cp39-macosx_10_12_x86_64.whl.
File metadata
- Download URL: rustmfx-0.1.4-cp39-cp39-macosx_10_12_x86_64.whl
- Upload date:
- Size: 279.3 kB
- Tags: CPython 3.9, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.8.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2a24c4190d0ffee5d32a11add67fc599e1932c25903d74c3d9740e13b3adc587
|
|
| MD5 |
45dfc2527d6db4e54c2316da0dfc5236
|
|
| BLAKE2b-256 |
fd410cb19e21efb4c07b8c95af642524a22ea69b58b26e5f60cd24f8b169657e
|
File details
Details for the file rustmfx-0.1.4-cp38-cp38-win_amd64.whl.
File metadata
- Download URL: rustmfx-0.1.4-cp38-cp38-win_amd64.whl
- Upload date:
- Size: 1.0 MB
- Tags: CPython 3.8, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.8.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
654c7b2cd7d31465a76d729b0b1f790355df1d4d8ebbd7ad13ea864fe3519fe9
|
|
| MD5 |
cfcec3cfc87c2341cbadd8d1d937f83b
|
|
| BLAKE2b-256 |
0168ae9d72940e8fba501358cee08aef79838fd55831033fec896d251d1470be
|
File details
Details for the file rustmfx-0.1.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: rustmfx-0.1.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 308.8 kB
- Tags: CPython 3.8, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.8.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f74bfefefb7d373c33ba57820c75f6f3240febdde41d8a1a878017de55ffa9b0
|
|
| MD5 |
a64b5419bc8180fa7ad199b5407facde
|
|
| BLAKE2b-256 |
ff1d10ab2fb6c6b365d89640e11dbce98689ebebeb02a4a59f5455cdf589f02c
|
File details
Details for the file rustmfx-0.1.4-cp38-cp38-macosx_11_0_arm64.whl.
File metadata
- Download URL: rustmfx-0.1.4-cp38-cp38-macosx_11_0_arm64.whl
- Upload date:
- Size: 260.6 kB
- Tags: CPython 3.8, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.8.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2b80c881fee49db3b7fc0852fd15be053011fef608d3b385b345e536e5112446
|
|
| MD5 |
b5839cfee871f2285e542c8bc99b1635
|
|
| BLAKE2b-256 |
b867962899c9a33fb8c76c04c12285d58c97e5b31ece97e060d6973787d83942
|
File details
Details for the file rustmfx-0.1.4-cp38-cp38-macosx_10_12_x86_64.whl.
File metadata
- Download URL: rustmfx-0.1.4-cp38-cp38-macosx_10_12_x86_64.whl
- Upload date:
- Size: 279.2 kB
- Tags: CPython 3.8, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.8.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
09df772f4625d9b24e5c98a4ca8ea3f08ae97fa3b23bf5bddf0732cc11774ade
|
|
| MD5 |
406952aedf4f8608c5c9abbe553ebb79
|
|
| BLAKE2b-256 |
04f3add13c078a9d7e81f57942a11b9ed5b1b16df02ed125538516ccc8e1d7d0
|